当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

用ADO管理SQL Server数据库及其设备[MSSQL防范]

赞助商链接



  本文“用ADO管理SQL Server数据库及其设备[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
  微软公司的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:SQLGetCurrentDatabase90%" border="1" align="center" class=txcode bgcolor="#DADACF">
PublicFunctionSQLExistDeviceName(CnAsADODB.Connection,sDevNameAsString)AsBoolean

'--按照名称判断一个设备能否存在,假如存在,返回1,不然返回0

DimsSQLAsStringDimRSAsNewADODB.RecordsetDimbTmpAsBooleanOnErrorGoToerrSQLExistDeviceNamesSQL="
selectCntDev=count(*)frommaster.dbo.sysdeviceswherename=‘"&sDevName&"'"RS.OpensSQL,CnIfRS!CntDev=0ThenbTmp=FalseElsebTmp=
TrueRS.CloseSQLExistDeviceName=bTmpExitFunctionerrSQLExistDeviceName:
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的版本是非常重要的.   以上是“用ADO管理SQL Server数据库及其设备[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 用ADO管理SQL Server数据库及其设备
  • 用ADO管理SQLServer数据库及其设备
  • <b>在managed C++利用中利用ADO.NET</b>
  • 用ADO压缩Access2000库
  • <b>在CB5中利用ADO数据库编程</b>
  • 利用ADO在sql server建表的办法
  • 若何利用ADO.NET操作数据库
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .