麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

在VB中更改SQLServer數據庫結構

2019-11-18 17:35:34
字體:
來源:轉載
供稿:網友
筆者在開發"涼山州林業局"天然林資源保護綜合管理系統中,需要為程序建立SqlServer數據庫的運行環境。為了方便用戶,筆者開發了這個數據庫配置工具。完成在SQLServer數據庫中建立設備,建立數據庫,建立表格,分配權限的功能,"涼山州林業局"系統中的所有數據庫配置操作都可以通過這個小工具完成。方便了數據庫應用程序所需SqlServer環境的建立,根本不用啟動SQLEnterWord&";database="&DatabaseName&""
'連接數據串
conn.open'連接數據庫

----注:ServerName為服務器名;UserName為用戶名;Password為用戶口令;DatabaseName要登錄的數據庫名,可以為空。
----核心代碼如下:

一、建立數據庫
----原理:建立數據庫先要初始化一個數據庫設備,然后在此設備上建立數據庫。所有的設備名在系統表"sysdevices"里有記錄,所有的數據庫名在系統表"sysdatabases"里有記錄。在建立之前,最好先查詢這兩個系統表,看名稱是否已經存在。在建立設備之前,還需要的一個物理名和空閑的設備標識號。
初始化設備語法:
DISKINITNAME="device_name",PHYNAME=
"physical_name",VDEVNO=device_number,
SIZE=numberofblock

----說明:這里,NAME是數據庫設備名(一個有效的標識符),PHYNAME(數據庫設備的物理名)是原始的磁盤分區UNIX或外設(vms)名,或者是操作系統的文件名。VDEVNO時數據庫的設備標識號,合法值為1-255,SIZE的單位是2KB的塊,例如1MB(1024KB)時SIZE值為512。
----建立數據庫語法:CREATEDATABASEdatabase_name[ONdatabase_device]

----說明:database_name是要建的數據庫名,database_device是設備名

----要新建立一個數據庫,就需要設備名,數據庫名,物理名和設備號。具體步驟如下:

----我們假設用戶要新建立設備dbName,在設備dbName上建立數據庫dbName。

----1)得到設備名。dbName是用戶給出的設備名;先查詢系統表sysdevices,看用戶給出的設備名dbName是否已經存在,如果此設備名存在,就需要更換一個設備名,因為設備名是唯一的。

sql="select*fromsysdevices
wherename='"&dbName&"'"
Setrs=conn.Execute(sql)
IfNotrs.EOFThen
MsgBox"設備名""&dbName&""
已存在!",16,"請重新輸入名稱"
ExitSub
EndIf

----2)得到數據庫名。dbName是用戶給出的數據庫名;查詢系統表sysdatabases,看用戶給出的數據庫名dbName是否已經存在,如果此數據庫存在,就需要更換一個數據庫名,像設備名一樣,數據庫名也是唯一的
sql="select*fromsysdatabases
wherename='"&dbName&"'"
Setrs=conn.Execute(sql)'下面代碼略

----3)得到PHYNAME物理名。查詢服務器上數據庫文件的物理位置serverpath,典型的,我們可以從系統表sysdevices中查詢master(這是SQLServer的主庫名)數據庫的位置,例如G:/MSSQL/DATA/MASTER.DAT,則我們的數據庫可以建在"G:/MSSQL/DATA/"目錄下。
sql="selectname,phynamefromsysdevices"
'low/16777216為設備號
Setrs=conn.Execute(sql)
然后遍歷記錄對象rs,當name="master"時,取出phyname,
從而可以得到物理位置serverpath=G:/MSSQL/DATA/。

----4)得到一個空閑的設備號vdevno。設備號合法值1~255,遍歷這些號,查找出未被使用的空閑設備號,下面程序得到已有的設備號
sql="selectdistinctlow/16777216
fromsysdevicesorderbylow/16777216"
'low/16777216為設備號

----5)建立數據庫。所需的信息都準備完畢,可以建立數據庫了(注:下面的""&Chr(34)&""就是一個"""雙引號,這樣處理后,才能滿足語法要求;數據庫為20M,則dbSize=512*20)
sql="DISKINITNAME="&Chr(34)&""
&dbName&""&Chr(34)&",PHYSNAME="
&Chr(34)&""&serverpath&""&dbName
&".dat"&Chr(34)&",VDEVNO="&vdevno
&",SIZE="&dbSize&""
Setrs=conn.Execute(sql)'初始化設備
sql="CREATEDATABASE"&dbName&"
on"&dbName&"="&dbSize&""
'注:
第一個dbName是數據庫名,
第二個dbName是設備名
Setrs=conn.Execute(sql)'
在設備dbName上建立數據庫dbName
MsgBox"數據庫""&dbName&""建在服務器上
""&serverpath&""&dbName&".dat",
建立成功!",64,"成功"

二、建立表格
----建立表格比較簡單,這里用到了自動計數字段和缺省值字段類型,語法如下:
CREATETABLEtable_name
(field_namedata_type[NOTNULL|NULL],…)

----說明:table_name為新建的表名,field_name為字段名,data_type為數據類型。
(注意下面的fileidintIDENTITY字段自動計數,
datetimeNOTNULLDEFAULT(GETDATE())字段每當入
庫時有個缺省值,由數據庫生成當時的時間)。
sql="CREATETABLE"&TableName&"
(fileidintIDENTITY,filetimedatetimeNOT
NULLDEFAULT(GETDATE()),fileimageimageNULL)"
conn.Executesql'建立表格

三、建立用戶組用戶
----建立用戶組和用戶不能直接通過SQL語句完成,需要執行SQLServer的存儲過程sp_addlogin,sp_addgroup,sp_adduser。我們假設新建登錄賬號是username1,用戶名是username1,組名是group1,則步驟如下:
----1)建立用戶的登錄賬號

語法:sp_addloginlogin_name,password[,defdb]
其中,login_name是用戶的登錄名,password是用
戶的口令,defdb上登錄的缺省數據庫名稱。建立數
據庫DatabaseName的登錄賬號:
sql="EXECUTEsp_addlogin"&username1&","
&password1&","&DatabaseName&""
Setrs=conn.Execute(sql)

----2)增加用戶組
語法:sp_addgroupgroup_name
其中,group_name是新建組名
sql="EXECUTEsp_addgroup"&group1&""
Setrs=conn.Execute(sql)

----3)增加用戶
語法:sp_adduserlogin_name
[,name_in_db[,grpname]]
其中,login_name用戶名,name_in_db是用戶在當
前數據庫中的名字(這里是第一步建立的登錄賬號
username1),grpname是要將用戶加入的那個組的組名。

在數據庫DatabaseName增加用戶username1:
sql="EXECUTEsp_adduser"&username1&","&
username1&","&group1&""
'注:第一個username1是用戶名,第二個username1是
數據庫DatabaseName的登錄賬號
Setrs=conn.Execute(sql)

四、分配權限
----語法:grantpermission_listonobject_nametowho
----其中,permission_list是所要分配的權限清單,object_name是在這個對象上的權限,who是接受授權的用戶。

----涼山州林業局"系統需要將特殊用戶建立的表授權給其他用戶,所以先從系統表sysobjects得到所有的用戶建立表格名(type='U')

sql="selectnamefromsysobjectswheretype='U'"
Setrs=conn.Execute(sql)

----然后從中選取所需要的表格來分配權限給其他用戶。例如,這里選擇將tablename3的讀取權限分配給組group1。
sql="grantselecton"&tablename3&
"to"&group1&""
conn.Executesql

----由于這個小工具的使用,使SQLServer數據庫配置變得簡單、方便了。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲午夜免费电影 | 国产一区二区三区网站 | 久草在线小说 | 欧美日韩精品一区二区三区蜜桃 | 日韩精品中文字幕一区 | 欧美精品成人一区二区在线观看 | 亚洲精品一二三区 | 中国成人在线视频 | 欧美精品久久久久久久久老牛影院 | 一区二区三视频 | 爽妇网国产精品 | 国产精品99久久免费观看 | 中文字幕www.| 亚洲精品欧美二区三区中文字幕 | 7777在线观看 | 今井夏帆av一区二区 | 亚洲午夜激情网 | 在线播放一区二区三区 | 免费高清一级欧美片在线观看 | 羞羞的动漫在线观看 | 黄色久 | av成人在线免费观看 | 国产精品区一区二区三区 | 成人免费在线观看视频 | 极品五月天 | 久久精品视频16 | 免费淫视频 | 精品国产成人 | 99精品视频在线免费观看 | 中文字幕在线观看www | 99re色| asian gaysex| 国产乱子视频 | gogo全球大胆高清人露出91 | 久久精精| 欧美中文字幕一区二区三区亚洲 | 狠狠干五月天 | 国产色爱综合网 | 欧美成年性h版影视中文字幕 | 国产一国产一级毛片视频 | 综合精品 |