SQL Server資料對象結構的動態建立與訪問

來源:互聯網
上載者:User

SQL Server資料對象結構的動態建立與訪問

Microsoft SQL Server與ORACAL、Sybase都是當前比較流行的資料庫管理系統(RDMS),隨著SQL Server的不斷完善與發展,以及與網路作業系統Windows NT的完美結合,它為分布式客戶服務器結構程式設計提供了良好的開發環境,也因此越來越受到人們的重視。

Microsoft SQL Server是一個可縮放、高效能的資料庫管理系統,它提供了與Windows NT線程和調度服務、效能監控器和事件瀏覽器的整合,基於Windows管理介面並提供對多個伺服器上的遠端資料複製管理、伺服器管理、診斷和調整的可視化拖放控制。

分散式管理物件(DMO)為SQL Server引擎和服務提供了一個對象介面。SQL-DMO是為Windows 95與 Windows NT作業系統提供的32位OLEAutomation 物件,OLE是維護應用程式共用對象的標準和方法,是一種允許應用程式為進行管理或資料訪問共用對象的編程方法。DMO是利用OLE結構開發的,它為與OLE相容的應用程式提供了通向所有SQL Server管理功能的介面,DMO使軟體開發人員直接存取SQL Server資料對象變成可能。我們利用Visual Basic與Visual FoxPro等編程工具就可以使用分散式管理物件實現對SQL Server的直接存取。

Microsoft SQL Server所提供的工具使用戶端能通過多種方法訪問伺服器上的資料,這些工具的核心部分即是Transact-SQL(事務SQL)代碼。Transact-SQL是結構化查詢語言 (SQL)( SQL)的增強版本,它提供了許多附加的功能和函數。利用Transact-SQL,你可以建立資料庫裝置、資料庫和其它資料對象、從資料庫中提取資料、修改資料,也可以動態地改變SQL Server中的設定。因此,使用Transact-SQL大大地提高了應用程式的實用性。

當我們進行Client/Server結構項目開發時需要建立若干個資料對象的結構,如果所開發的項目是面向某個具體的客戶時,在Server上手工建立資料庫裝置、資料庫與表是可行的,但是如果所開發的項目是作為軟體發行而非面向某個具體的客戶時,無疑,手工建立資料對象的結構是不現實的,我們需要將建立資料庫與表的過程固化在程式中,當程式運行時動態地在Server上建庫與表。因此,利用分散式管理物件與Transact-SQL是進行Client/Server結構程式設計的重要手段。

下面將討論如何在Visual Basic 5.0中利用DMO與Transact-SQL在SQL Server上建立資料庫裝置、資料庫及其他資料對象。我們從具體問題著手:在SQL Server上建立200M與400M的資料庫裝置Device_1、Device_2,在Device_1與Device_2上分別建立容量為100M的兩個資料庫Db1與DB2,在Db1庫中建立表T_1,有四個域:Name,Age,Sex,ID_Code,以ID_Code為關鍵字,以Name為索引,在Db2庫中建立表T_2,有五個域:Name、Age、Sex、Department、No,以Department與No為關鍵字。

訪問SQL Server,首先要開啟SQL Service Manager,SQL Service Manager 用於啟動、暫停、繼續、停止SQL Server的服務,包括MSSQLServer與SQLExecutive兩項。可以通過手工方式開啟這兩項服務,也可以在程式中通過行命令式開啟它們。

若採用手工方式,則開啟SQL Service Manager,對於其中的服務MSSQLServer與SQLExecutive,直接啟動它們的Start/Continue綠燈即可。

採用行命令啟動方式,可利用VB的Shell命令:

X=shell("Sqlmgr.exe",1) 顯示SQL Service Manager視窗;
X=shell("net start mssqlserver") 啟動MSSQLServer服務
X=shell("net start sqlexecutive") 啟動SQLExecutive服務

因為在這裡我們希望通過編程在SQL Server上實現資料對象結構的動態建立,因此建議使用行命令方式。

啟動了SQL Server Manager後,我們就可以利用DMO與Transact-SQL按以下步驟來建資料對象了。

1.為能使用DMO,首先需要開啟VB工具列中Reference(引用),選擇Microsoft Windows Common Control 5.0,如果在引用欄中沒有發現此項,則選擇Browse(瀏覽),將\WINNT\System32目錄下的Comctl32.oca加入到Reference中來。

2.在模組檔案(.BAS)中建立SQLOLE對象:
Global OServer as New SQLOLE.SQLServer

3.建立與SQL Server的串連:
OServer.Connect ServerName:=註冊的SQL Server名,Login:=登入名稱(一般為sa),Password:=密碼

4.建資料庫裝置Device_1與Device_2:
dim transql as string
transql="use master" & _
"DISK INIT" & _
"Name='Device_1'," & _
"Physname='D:\SQL\data\device1.dat'," & _
"vdevno=10," & _
"size=102400" & _
"DISK INIT" & _
"Name='Device2'," & _
"Physname='D:\SQL\data\device2.dat'," & _
"vdevno=11," & _
"size=204800"
OServer.ExecuteImmediate Command:=transql,exectype:=SQLOLEExec_Default

5.建資料庫Db_1與Db_2:
transql = "CREATE DATABASE Db_1 ON Device_1=100 "
OServer.ExecuteImmediate Command:=transql, exectype:=SQLOLEExec_Default
transql = "CREATE DATABASE Db_2 ON Device_2=100 "
OServer.ExecuteImmediate Command:=transql, exectype:=SQLOLEExec_Default

6.在資料庫中建表:
在資料庫Db_1上建表T_1:
transql = "use Db_1 " & _
"create table T_1 " & _
"(Name char(8) null, " & _
" Age numeric(2) null, " & _
" Sex smallint null, " & _
" ID_Code char(16) not null, " & _
" constraint c_1 primary key clustered (ID_Code))"
OServer.ExecuteImmediate Command:=transql,exectype:=SQLOLEExec_Default
建表T_1的Name列的索引:
transql="CREATE INDEX index_1 ON T_1 (Name)"
OServer.ExecuteImmediate Command:=transql,exectype:=SQLOLEExec_Default
在資料庫Db_2上建表T_2:
transql = "use Db_2 " & _
"create table T_2 " & _
"(Name char(8) null, " & _
" Age numeric(2) null, " & _
" Sex smallint null, " & _
" Department char(16) not nill, " & _
" No char(4) not null," & _
"constraint c_2 primary key clustered (Department,No))"
OServer.ExecuteImmediate Command:=transql, exectype:=SQLOLEExec_Default

此時,我們完成了建立資料對象的編碼工作,程式被編譯執行後,就會在SQL Server上自動建立資料庫裝置、資料庫及庫中的表。

對於資料庫裝置,可以用DISK REINIT,DISK REFIT,DISK RESIZE對它進行操作,如要擴充資料庫裝置Device_1的容量為200M,可利用如下方法:

DISK RESIZE
Name='Devive_1',
Size = 102400

對於SQL Server上已經建立的資料庫及表的結構,也可以通過DMO與事務SQL進行修改與刪除。類似於上面的編碼,可以利用Alter Database Db_1,Alter DatabaseDb_2,Alter Table T_1,Alter Table T_2等事務SQL語句進行對所建立的資料庫與表的的結構進行修改,而利用Drop Database, Drop Table事務語句刪除所建立的資料庫與表。

以上討論了如何在SQL Server上動態地建立與訪問資料對象的結構,至於對SQL Server上資料庫與表的內容的訪問,可以利用ODBC(開放資料庫互連)、DAO(Data Access Objects)、RDO(遠端資料物件)或DB-Library進行編程。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.