六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用ADO管理SQL Server數據庫及其設備

[摘要]微軟公司的SQLServer是目前小型網絡中常用的數據庫管理系統之一。面向這種網絡數據庫的應用程序也在日益增多,這種網絡數據庫應用系統的正常運行,一般都依賴于已經存在的用戶數據庫。創建數據庫的工作當然可以用SQL Server提供的SQL EnterpriseManager工具來完成,但是,如果能...
微軟公司的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.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的版本是非常重要的。 


主站蜘蛛池模板: 午夜人体视频 | 亚欧视频在线 | 搜索黄色毛片 | 四虎影视免费看 | 五月婷婷之婷婷 | 香蕉草莓榴莲向日葵 | 色香欲亚洲天天综合网 | 日本一区二区视频免费播放 | 日本高清视频一区二区三区 | 色噜噜噜噜噜噜 | 色老成人精品视频在线观看 | 欧美亚洲图区 | 日本高清免费在线观看 | 三级黄色片在线观看 | 天天做夜夜做 | 色偷偷亚洲男人天堂 | 亚洲狼网站狼狼鲁亚洲下载 | 色男人综合 | 亚洲精品亚洲人成在线观看麻豆 | 天天干天天玩 | 四虎最新网址 | 四虎在线视频 | 午夜影视免费完整高清在线观看网站 | 日韩在线视频免费观看 | 欧美一级做a爰片免费 | 欧美亚洲国产精品第一页 | 青青草国产免费久久久下载 | 亚洲成人自拍网 | 日韩久久网| 日本韩国三级观看 | 亚洲天堂视频一区 | 一级一级女人真片 | 五月激情丁香 | 天天操天天爱天天干 | 日韩中文字幕在线观看视频 | 在线另类视频 | 亚洲高清视频网站 | 天天操天天舔天天射 | 日韩不卡一级毛片免费 | 全国男人的天堂网 | 日本最新免费二区三区 |