熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server數據對象結構的動態建立

2022-06-13   來源: SQL Server 

  Microsoft SQL Server與ORACALSybase都是當前比較流行的數據庫管理系統(RDMS)隨著SQL Server的不斷完善與發展以及與網絡操作系統Windows NT的完美結合它為分布式客戶服務器結構程序設計提供了良好的開發環境也因此越來越受到人們的重視
  
  Microsoft SQL Server是一個可縮放高性能的數據庫管理系統它提供了與Windows NT線程和調度服務性能監視器和事件浏覽器的集成基於Windows管理界面並提供對多個服務器上的遠程數據復制管理服務器管理診斷和調整的可視化拖放控制
  
  分布式管理對象(DMO)為SQL Server引擎和服務提供了一個對象接口SQLDMO是為Windows 與 Windows NT操作系統提供的位OLE自動化對象OLE是維護應用程序共享對象的標准和方法是一種允許應用程序為進行管理或數據訪問共享對象的編程方法DMO是利用OLE結構開發的它為與OLE兼容的應用程序提供了通向所有SQL Server管理功能的接口DMO使軟件開發者直接訪問SQL Server數據對象變成可能我們利用Visual Basic與Visual FoxPro等編程工具就可以使用分布式管理對象實現對SQL Server的直接訪問
  
  Microsoft SQL Server所提供的工具使客戶端能通過多種方法訪問服務器上的數據這些工具的核心部分即是TransactSQL(事務SQL)代碼TransactSQL是結構化查詢語言( SQL)的增強版本它提供了許多附加的功能和函數利用TransactSQL你可以創建數據庫設備數據庫和其它數據對象從數據庫中提取數據修改數據也可以動態地改變SQL Server中的設置因此使用TransactSQL大大地提高了應用程序的實用性
  
  當我們進行Client/Server結構項目開發時需要建立若干個數據對象的結構如果所開發的項目是面向某個具體的客戶時在Server上手工建立數據庫設備數據庫與表是可行的但是如果所開發的項目是作為軟件發行而非面向某個具體的客戶時無疑手工建立數據對象的結構是不現實的我們需要將創建數據庫與表的過程固化在程序中當程序運行時動態地在Server上建庫與表因此利用分布式管理對象與TransactSQL是進行Client/Server結構程序設計的重要手段
  
  下面將討論如何在Visual Basic 中利用DMO與TransactSQL在SQL Server上建立數據庫設備數據庫及其他數據對象我們從具體問題著手在SQL Server上建立M與M的數據庫設備Device_Device_在Device_與Device_上分別建立容量為M的兩個數據庫Db與Db在Db庫中建立表T_有四個域NameAgeSexID_Code以ID_Code為關鍵字以Name為索引在Db庫中建立表T_有五個域NameAgeSexDepartmentNo以Department與No為關鍵字
  
  訪問SQL Server首先要打開SQL Service ManagerSQL Service Manager 用於啟動暫停繼續停止SQL Server的服務包括MSSQLServer與SQLExecutive兩項可以通過手工方式打開這兩項服務也可以在程序中通過行命令式打開它們
  
  若采用手工方式則打開SQL Service Manager對於其中的服務MSSQLServer與SQLExecutive直接啟動它們的Start/Continue綠燈即可
  
  采用行命令啟動方式可利用VB的Shell命令
  
  X=shell(Sqlmgrexe) 顯示SQL Service Manager窗口
  X=shell(net start mssqlserver) 啟動MSSQLServer服務
  X=shell(net start sqlexecutive) 啟動SQLExecutive服務
  
  因為在這裡我們希望通過編程在SQL Server上實現數據對象結構的動態建立因此建議使用行命令方式
  
  啟動了SQL Server Manager後我們就可以利用DMO與TransactSQL按以下步驟來建數據對象了
  
  為能使用DMO首先需要打開VB工具欄中Reference(引用)選擇Microsoft Windows Common Control 如果在引用欄中沒有發現此項則選擇Browse(浏覽)將\WINNT\System目錄下的Comctloca加入到Reference中來
  
  在模塊文件(BAS)中建立SQLOLE對象
  
  Global OServer as New SQLOLESQLServer
  
  建立與SQL Server的連接
  
  OServerConnect ServerName:=注冊的SQL Server名Login:=登錄名(一般為sa)Password=密碼
  
  建數據庫設備Device_與Device_
  
  dim transql as string
  transql=use master & _
  DISK INIT & _
  Name=Device_ & _
  Physname=D:\SQL\data\devicedat & _
  vdevno= & _
  size= & _
  DISK INIT & _
  Name=Device & _
  Physname=D:\SQL\data\devicedat & _
  vdevno= & _
  size=
  OServerExecuteImmediate Command:=transqlexectype:=SQLOLEExec_Default
  
  建數據庫Db_與Db_
  
  transql = CREATE DATABASE Db_ ON Device_=
  OServerExecuteImmediate Command:=transql exectype:=SQLOLEExec_Default
  transql = CREATE DATABASE Db_ ON Device_=
  OServerExecuteImmediate Command:=transql exectype:=SQLOLEExec_Default
  
  在數據庫中建表:
  
  在數據庫Db_上建表T_:
  
  transql = use Db_ & _
  create table T_ & _
  (Name char() null & _
   Age numeric() null & _
   Sex smallint null & _
   ID_Code char() not null & _
   constraint c_ primary key clustered (ID_Code))
  OServerExecuteImmediate Command:=transqlexectype:=SQLOLEExec_Default
  
  建表T_的Name列的索引
  
  transql=CREATE INDEX index_ ON T_ (Name)
  OServerExecuteImmediate Command:=transqlexectype:=SQLOLEExec_Default
  
  在數據庫Db_上建表T_:
  
  transql = use Db_ & _
  create table T_ & _
  (Name char() null & _
   Age numeric() null & _
   Sex smallint null & _
   Department char() not nill & _
   No char() not null & _
  constraint c_ primary key clustered (DepartmentNo))
  OServerExecuteImmediate Command:=transql exectype:=SQLOLEExec_Default
  
  此時我們完成了建立數據對象的編碼工作程序被編譯執行後就會在SQL Server上自動建立數據庫設備數據庫及庫中的表
  
  對於數據庫設備可以用DISK REINITDISK REFITDISK RESIZE對它進行操作如要擴展數據庫設備Device_的容量為M可利用如下方法
  
  DISK RESIZE
  Name=Devive_
  Size =
  
  對於SQL Server上已經建立的數據庫及表的結構也可以通過DMO與事務SQL進行修改與刪除類似於上面的編碼可以利用Alter Database Db_Alter DatabaseDb_Alter Table T_Alter Table T_等事務SQL語句進行對所建立的數據庫與表的的結構進行修改而利用Drop Database Drop Table事務語句刪除所建立的數據庫與表
  
  以上討論了如何在SQL Server上動態地建立與訪問數據對象的結構至於對SQL Server上數據庫與表的內容的訪問可以利用ODBC(開放數據庫互連)DAO(數據訪問對象)RDO(遠程數據對象)或DBLibrary進行編程
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22128.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.