開發資料庫應用程式時,常需列舉伺服器資料庫、資料表、欄位等中繼資料。SQL-DMO (Distributed Management Objects) 提供 OLE 自動化介面,讓 VB/VBA/ASP 等語言可直接操作 SQL Server 管理物件。
Dim oSQLServer As SQLDMO.SQLServer ' 伺服器連線
Dim oCurrentDB As SQLDMO.Database ' 目前資料庫
Dim oCurrentTable As SQLDMO.Table ' 目前資料表
Set oSQLServer = CreateObject("SQLDMO.SQLServer")
oSQLServer.Connect SERVER_NAME, USERNAME, PASSWORD
' 填入非系統資料庫清單
For Each oDB In oSQLServer.Databases
If oDB.SystemObject = False Then
cboDatabase.AddItem oDB.Name
End If
Next
Set oCurrentDB = oSQLServer.Databases(cboDatabase.Text)
For Each oTable In oCurrentDB.Tables
If oTable.SystemObject = False Then
lstTables.AddItem oTable.Name
End If
Next
Set oCurrentTable = oCurrentDB.Tables(lstTables.Text)
For Each oCol In oCurrentTable.Columns
' 欄位名稱、型別、長度、是否允許 NULL、預設值等
Debug.Print oCol.Name, oCol.Type, oCol.Length, oCol.NullOK, oCol.DefaultValue
Next
| 物件 | 常用屬性/方法 |
|---|---|
SQLServer | Connect、Databases、Login、ExecuteImmediate |
Database | Tables、StoredProcedures、Views、ExecuteWithResults |
Table | Columns、Indexes、Keys、Name、SystemObject |
Column | Name、Type、Length、NullOK、Identity、DefaultValue |
SQL-DMO 已在 SQL Server 2005 標記為淘汰,新專案建議改用 SMO (SQL Server Management Objects),提供 .NET 原生介面、效能更佳、功能更完整。