2)得到数据库名。dbName是用户给出的数据库名;查询系统表sysdatabases,看用户给出的数据库名dbName是否已经存在,如果此数据库存在,就需要更换一个数据库名,像设备名一样,数据库名也是唯一的
sql = "select * from sysdatabases where name=" & dbName & "" Set rs = conn.Execute(sql) 下面代码略 |
3)得到PHYNAME物理名。查询服务器上数据库文件的物理位置serverpath,典型的,我们可以从系统表sysdevices中查询master(这是SQL Server的主库名)数据库的位置,例如G:\MSSQL\DATA\MASTER.DAT,则我们的数据库可以建在"G:\MSSQL\DATA\"目录下。
sql = "select name,phyname from sysdevices " low/16777216为设备号 Set rs = conn.Execute(sql) |
然后遍历记录对象rs,当name="master"时,取出phyname,从而可以得到物理位置serverpath =G:\MSSQL\DATA\。
4)得到一个空闲的设备号vdevno。设备号合法值1~255,遍历这些号,查找出未被使用的空闲设备号,下面程序得到已有的设备号
sql = "select distinct low/16777216 from sysdevices order by low/16777216" low/16777216为设备号 |
5)建立数据库。所需的信息都准备完毕,可以建立数据库了(注:下面的"" & Chr(34) & ""就是一个"""双引号,这样处理后,才能满足语法要求;数据库为20M,则dbSize=512*20)
sql = "DISK INIT NAME=" & Chr(34) & "" & dbName & "" & Chr(34) & ",PHYSNAME=" & Chr(34) & "" & serverpath & "" & dbName & ".dat" & Chr(34) & ",VDEVNO=" & vdevno & ",SIZE=" & dbSize & "" Set rs = conn.Execute(sql) 初始化设备 sql = "CREATE DATABASE " & dbName & " on " & dbName & "=" & dbSize & "" |
注:
第一个dbName是数据库名,第二个dbName是设备名Set rs = conn.Execute(sql)
在设备dbName上建立数据库dbName
MsgBox "数据库"" & dbName & ""建在服务器上"" & serverpath & "" & dbName & ".dat",建立成功!", 64, "成功"