用ADO管理SQLServer及其裝置

2021-04-17 04:34:47 字數 1707 閱讀 8282

微軟公司的是目前小型網路中常用的資料庫

管理系統之一。面向這種網路資料庫的應用程式也在日益增多,這種網路資料庫應用系統的正常執行,一般都依賴於已經存在的使用者資料庫。建立資料庫的工作當然可以用

sqlserver提供的sqlenterprisemanager工具來完成,但是,如果能夠提供一種定製的資料庫

管理工具,專門

管理應用系統需要的資料庫及

其裝置,對使用者來說無疑更加理想。我們知道,在使用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[=size][,database_device[=size]]...][logondatabase_device[=size][,database_device[=size]]...][forload]
其中,大部分引數都是可選的,我們只需要指定乙個裝置名及資料庫的大小即可,而資料庫名、裝置名、大小在建立裝置的時候已經確定好了,所以,這個語句的引數不存在問題。1

ADO讀寫SQlServer資料庫

寫入時間值 coledatetime oledate coledatetime getcurrenttime variant t vtfld vtfld.vt vt date vtfld.date oledate precordset4 putcollect date vtfld 讀時間值 bstr...

MFC通過ADO連線SQL SERVER資料庫

以乙個mfc的dialog應用程式為例。1.首先是引入msado15.dll。在stdafx.h中加入 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2.初始化com...

MFC使用ADO連線SQL Server資料庫

1.首先,要用 import語句來引用支援ado的元件型別庫 tlb 其中型別庫可以作為可執行程式 dll exe等 的一部分被定位在其自身程式中的附屬資源裡,如 被定位在msado15.dll的附屬資源中,只需要直接用 import引用它既可。可以直接在stdafx.h檔案中加入下面語句來實現 i...