MicrosoftSQLServer與ORACAL、Sybase都是當前比較流行的數據庫管理系統(RDMS),隨著SQLServer的不斷完善與發展,以及與網絡操作系統WindowsNT的完美結合,它為分布式客戶服務器結構程序設計提供了良好的開發環境,也因此越來越受到人們的重視。
MicrosoftSQLServer是一個可縮放、高性能的數據庫管理系統,它提供了與WindowsNT線程和調度服務、性能監視器和事件瀏覽器的集成,基于Windows管理界面并提供對多個服務器上的遠程數據復制管理、服務器管理、診斷和調整的可視化拖放控制。
分布式管理對象(DMO)為SQLServer引擎和服務提供了一個對象接口。SQL-DMO是為Windows95與WindowsNT操作系統提供的32位OLE自動化對象,OLE是維護應用程序共享對象的標準和方法,是一種允許應用程序為進行管理或數據訪問共享對象的編程方法。DMO是利用OLE結構開發的,它為與OLE兼容的應用程序提供了通向所有SQLServer管理功能的接口,DMO使軟件開發者直接訪問SQLServer數據對象變成可能。我們利用VisualBasic與VisualFox 因為在這里我們希望通過編程在SQLServer上實現數據對象結構的動態建立,因此建議使用行命令方式。 啟動了SQLServerManager后,我們就可以利用DMO與Transact-SQL按以下步驟來建數據對象了。 1.為能使用DMO,首先需要打開VB工具欄中Reference(引用),選擇MicrosoftWindowsCommonControl5.0,如果在引用欄中沒有發現此項,則選擇Browse(瀏覽),將/WINNT/System32目錄下的Comctl32.oca加入到Reference中來。 2.在模塊文件(.BAS)中建立SQLOLE對象: 3.建立與SQLServer的連接: 4.建數據庫設備Device_1與Device_2: 5.建數據庫Db_1與Db_2: 6.在數據庫中建表: 此時,我們完成了建立數據對象的編碼工作,程序被編譯執行后,就會在SQLServer上自動建立數據庫設備、數據庫及庫中的表。 對于數據庫設備,可以用DISKREINIT,DISKREFIT,DISKRESIZE對它進行操作,如要擴展數據庫設備Device_1的容量為200M,可利用如下方法: DISKRESIZE 對于SQLServer上已經建立的數據庫及表的結構,也可以通過DMO與事務SQL進行修改與刪除。類似于上面的編碼,可以利用AlterDatabaseDb_1,AlterDatabaseDb_2,AlterTableT_1,AlterTableT_2等事務SQL語句進行對所建立的數據庫與表的的結構進行修改,而利用DropDatabase,DropTable事務語句刪除所建立的數據庫與表。 以上討論了如何在SQLServer上動態地建立與訪問數據對象的結構,至于對SQLServer上數據庫與表的內容的訪問,可以利用ODBC(開放數據庫互連)、DAO(數據訪問對象)、RDO(遠程數據對象)或DB-Library進行編程。
GlobalOServerasNewSQLOLE.SQLServer
OServer.ConnectServerName:=注冊的SQLServer名,Login:=登錄名(一般為sa),PassWord:=密碼
dimtransqlasstring
transql="usemaster"&_
"DISKINIT"&_
"Name='Device_1',"&_
"Physname='D:/SQL/data/device1.dat',"&_
"vdevno=10,"&_
"size=102400"&_
"DISKINIT"&_
"Name='Device2',"&_
"Physname='D:/SQL/data/device2.dat',"&_
"vdevno=11,"&_
"size=204800"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
transql="CREATEDATABASEDb_1ONDevice_1=100"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
transql="CREATEDATABASEDb_2ONDevice_2=100"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
在數據庫Db_1上建表T_1:
transql="useDb_1"&_
"createtableT_1"&_
"(Namechar(8)null,"&_
"Agenumeric(2)null,"&_
"Sexsmallintnull,"&_
"ID_Codechar(16)notnull,"&_
"constraintc_1primarykeyclustered(ID_Code))"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
建表T_1的Name列的索引:
transql="CREATEINDEXindex_1ONT_1(Name)"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
在數據庫Db_2上建表T_2:
transql="useDb_2"&_
"createtableT_2"&_
"(Namechar(8)null,"&_
"Agenumeric(2)null,"&_
"Sexsmallintnull,"&_
"Departmentchar(16)notnill,"&_
"Nochar(4)notnull,"&_
"constraintc_2primarykeyclustered(Department,No))"
OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
Name='Devive_1',
Size=102400
新聞熱點
疑難解答