学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> SQL >> 用ADO管理SQL Server数据库及其设备


用ADO管理SQL Server数据库及其设备


微软公司的SQLServer是目前小型网络中常用的数据库管理系统之一。面向这种网络数据库的应用程序也在日益增多,这种网络数据库应用系统的正常运行,一般都依赖于已经存在的用户数据库。创建数据库的工作当然可以用SQL Server提供的SQL EnterpriseManager工具来完成,但是,如果能够提供一种定制的数据库管理工具,专门管理应用系统需要的数据库及其设备,对用户来说无疑更加理想。

现存问题

我们知道,在使用CREATEDATABASE语句创建一个数据库之前,必须存在一个有剩余空间的数据库设备,或者事先使用DISKINIT语句创建一个新设备。但是这些语句含有很多必需的参数,而且如果不使用SQLServer的管理工具,很多参数值往往难以确定。

以创建数据库设备的DISKINIT语句为例,这个语句的完整语法如下:

DISKINITNAME=‘logical_name',
PHYSNAME=‘physical_name',VDEVNO=virtual_device_number,
SIZE=number_of_2K_blocks[,VSTART=virtual_address]

其中NAME和SIZE这两个参数都很容易得到,麻烦的是物理名PHYSNAME和虚拟设备号VDEVNO这两个参数。前者要求是一个服务器上的物理文件全路径名;后者要求在1~255之间找一个没有被别的设备占用的号码。而在编写数据库管理程序时,用户的服务器上有哪些设备号已经被占用,SQLServer装在哪个驱动器上,都是无法预料的。

虽然,使用SQLServer的管理工具SQLEnterpriseManager,可以非常方便地创建、删除数据库设备,或者扩大一个已经存在的数据库,也可以非常方便地创建、删除或者修改一个数据库,但是,这个工具仍然要求我们输入很多不太常用的参数,界面稍显复杂。

所以,理想的情况是:用户只需要按下一个命令按钮,应用程序需要的数据库及其设备都能立即自动地创建好。

解决方案

为了实现这样的目标,我们必须想办法解决SQL语句中的参数设置问题。

1.创建设备的语句参数

创建设备的语句即前面提到的DISKINIT语句。

为了简化问题,我们可以指定与数据库名相同的设备文件名,并将设备文件保存在master设备所在的子目录中。数据库名是在设计应用程序时已经确定;而master设备所在的子目录,可以从系统表sysdevices中查询得到。这样,设备文件的物理名参数就确定下来了。

虚拟设备号的问题则比较复杂,因为sysdevices系统表中没有“虚拟设备号”这样一个字段,因此,必须另想办法。

对SQLServer的系统存储过程sp_helpdevice进行分析之后,我们发现,虚拟设备号是“隐藏”在sysdevices系统表的low字段中的,借助另一个系统表spt_values,可以找到每个设备的虚拟设备号。这样,我们只需要在一个循环中找一下某个设备号是否存在于sysdevices中,就可以确定我们现在可用的虚拟设备号。

至于数据库设备的大小,我们不妨设得大一些,或者让用户指定一下也可以。

2.创建数据库的语句参数

创建数据库的语句如下:

CREATEDATABASEdatabase_name[ON{DEFAULT|database_device}[=size]
[,database_device[=size]]...]
[LOGONdatabase_device[=size][,database_device[=size]]...]
[FORLOAD]

其中,大部分参数都是可选的,我们只需要指定一个设备名及数据库的大小即可,而数据库名、设备名、大小在创建设备的时候已经确定好了,所以,这个语句的参数不存在问题。

具体实现

使用普通的应用开发工具VisualBasic,我们就可以实现一个定制的数据库管理程序。

为了实现与数据库服务器的连接,我们必须选择一种数据库访问接口。虽然从VB访问SQLServer有很多接口可供选择,但微软最新的数据库访问接口ADO(ActiveDataObjects)无疑是最有前途的,因为它为基于浏览器的数据库应用系统的实现提供了可能性。

以下是一些用于数据库及其设备管理的常用函数。

1.取当前的工作数据库 ----由于管理任务一般都必须在master库中完成,因此,在执行管理任务之前,最好保存当前工作库,以便完成任务之后再切换回去。

PublicFunctionSQLGetCurrentDatabaseName(CnAsADODB.Connection)
AsStringDimsSQLAsStringDimRSAsNewADODB.Recordset
OnErrorGoToerrSQLGetCurrentDatabaseNamesSQL=
“selectCurrentDB=DB_NAME()"RS.OpensSQL,
CnSQLGetCurrentDatabaseName=Trim$(RS!CurrentDB)RS.CloseExitFunctionerrSQLGetCurrentDatabaseName:
SQLGetCurrentDatabaseName=“"EndFunction

2.判断一个数据库设备是否存在

PublicFunctionSQLExistDeviceName(CnAsADODB.
Connection,sDevNameAsString)AsBoolean

'--按照名称判断一个设备是否存在,如果存在,返回1,否则返回0

DimsSQLAsStringDimRSAsNewADODB.RecordsetDimbTmpAs
BooleanOnErrorGoToerr
SQLExistDeviceNamesSQL=“
selectCntDev=count(*)frommaster.dbo.sysdevices
wherename=‘“&sDevName&”'"RS.OpensSQL,CnIfRS!CntDev=0
ThenbTmp=FalseElsebTmp=
TrueRS.CloseSQLExistDeviceName=bTmpExitFunctionerrSQL
ExistDeviceName:
SQLExistDeviceName=FalseEndFunction

3.判断一个虚拟设备号是否被占用:SQLExistDeviceNumber。

编者注:函数源代码发表在本报的WWW站点上,地址是:http://www.computerworld.com.cn/98/skill/default.htm。下同。欢迎访问!

4.找一个最小的尚未被占用的虚拟设备号:SQLGetUnusedDeviceNumber。

5.取得SQLServer安装目录下的DATA子目录路径:SQLGetDataPath。

6.创建一个新设备:SQLCreateDevice。

7.创建一个新的数据库:SQLCreateDatabase65。

8.取数据库设备的详细信息:SQLGetDeviceInfo。

9.扩大数据库设备的尺寸:SQLExpandDevice。

数据库应用系统在运行一段之后,数据量的增大往往要求数据库增大,进而要求扩大设备尺寸。可惜DISKRESIZE语句要求的尺寸参数为扩大后的新尺寸,而非需要增加的尺寸。所以,必须事先查到设备的原有尺寸,才能使用DISKRESIZE语句。

10.判断一个数据库是否存在:SQLExistDatabase。

11.删除一个数据库:SQLDropDatabase。

12.删除一个数据库设备:SQLDropDevice。

13.取SQLServer的版本信息:SQLGetVersionString。

在即将发行的SQLServer7.0中,不再有数据库设备的概念,创建数据库也将变得更加简单。在创建特定的用户数据库时,为了区分不同的版本进行不同的操作,取得SQLServer的版本是非常重要的。

(T114)

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用ADO管理SQL Server数据库及其设备"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用ADO管理SQL Server数据库及其设备 相关内容
Google搜索中 用ADO管理SQL Server数据库及其设备 相关内容
雅虎中 用ADO管理SQL Server数据库及其设备 相关内容
Sogou搜索中 用ADO管理SQL Server数据库及其设备 相关内容

相关软件 最新回复帖子:

·nesox让电子邮件营销原来如此轻松!
·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描


  相关软件 用ADO管理SQL Server数据库及其设备相关文章
通用SQL数据库查询语句精华使用简介 Oracle中捕获问题SQL解决CPU过渡消耗
如何在Oracle数据库10g中跟踪SQL SQL Server对文件内容进行全文检索查询
ORACLE中常用的SQL语法和数据对象 Oracle中使用SQL MODEL定义行间计算
在MySQL中执行SQL语句时的几个注意点 向你谈谈SQLPlus中的复制和粘贴技巧
热点关注:IBM将与微软开始激烈对决 关于SQL Server数据库的若干注意事项
50种方法巧妙优化你的SQL Server数据库 优化SQL Server服务器内存配置的策略
将SQL语句转换为符合VB.NET格式字符串 用MS SQL Reporting Services生成报表
ACCESS转化成SQL2000需要注意的问题 限制SQL Server只能让指定的机器连接
SQL Server数据库的数据汇总完全解析 几种简单的损坏控制文件的恢复方法
告诉你使用SQL Server 2005的3个理由 教你SQL Server数据库安全规划全攻略