微软公司的SQLServer是目前小型网络中常用的数据库管理系统之一
面向这种网络数据库的应用程序也在日益增多
这种网络数据库应用系统的正常运行
一般都依赖于已经存在的用户数据库
创建数据库的工作当然可以用SQL Server提供的SQL EnterpriseManager工具来完成
但是
如果能够提供一种定制的数据库管理工具
专门管理应用系统需要的数据库及其设备
对用户来说无疑更加理想
一现存问题
我们知道在使用CREATEDATABASE语句创建一个数据库之前必须存在一个有剩余空间的数据库设备或者事先使用DISKINIT语句创建一个新设备但是这些语句含有很多必需的参数而且如果不使用SQLServer的管理工具很多参数值往往难以确定
以创建数据库设备的DISKINIT语句为例这个语句的完整语法如下
DISKINITNAME=logical_namePHYSNAME=physical_nameVDEVNO=virtual_device_numberSIZE=number_of_K_blocks[VSTART=virtual_address]
其中NAME和SIZE这两个参数都很容易得到麻烦的是物理名PHYSNAME和虚拟设备号VDEVNO这两个参数前者要求是一个服务器上的物理文件全路径名后者要求在~之间找一个没有被别的设备占用的号码而在编写数据库管理程序时用户的服务器上有哪些设备号已经被占用SQLServer装在哪个驱动器上都是无法预料的
虽然使用SQLServer的管理工具SQLEnterpriseManager可以非常方便地创建删除数据库设备或者扩大一个已经存在的数据库也可以非常方便地创建删除或者修改一个数据库但是这个工具仍然要求我们输入很多不太常用的参数界面稍显复杂
所以理想的情况是用户只需要按下一个命令按钮应用程序需要的数据库及其设备都能立即自动地创建好
二解决方案
为了实现这样的目标我们必须想办法解决SQL语句中的参数设置问题
.创建设备的语句参数
创建设备的语句即前面提到的DISKINIT语句
为了简化问题我们可以指定与数据库名相同的设备文件名并将设备文件保存在master设备所在的子目录中数据库名是在设计应用程序时已经确定而master设备所在的子目录可以从系统表sysdevices中查询得到这样设备文件的物理名参数就确定下来了
[] [] []