SQL Distributed Management Objects (SQL-DMO) 是 SQL Server 2000/2005 提供的 COM 物件模型,讓開發者以程式碼自動化管理 SQL Server:建立資料庫、管理登入、備份/還原、設定複寫、列舉伺服器等。雖已被 SMO (SQL Management Objects) 取代,但在維護舊系統時仍常遇到。
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQLDMO.DLL。Dim sqlApp As New SQLDMO.Application
Dim sqlSvr As New SQLDMO.SQLServer
| 成員 | 型別 | 說明 | 範例 |
|---|---|---|---|
| LoginSecure | Property (Boolean) | 驗證模式:True=Windows 整合,False=SQL Server 驗證 | sqlSvr.LoginSecure = True |
| AutoReconnect | Property (Boolean) | 連線中斷是否自動重連 | sqlSvr.AutoReconnect = True |
| Connect | Method | 連線至執行個體 | sqlSvr.Connect "ServerName", "sa", "pwd" |
| NetName | Property (String) | 取得網路上的電腦名稱(非執行個體名) | MsgBox sqlSvr.NetName |
| SQLDataRoot | Property (String) | 設定/取得資料庫預設資料檔路徑 | sqlSvr.SQLDataRoot = "D:\MSSQL\Data" |
| 方法 | 回傳 | 說明 |
|---|---|---|
| ListAvailableSQLServers() | NameList | 列舉區域網路可見的 SQL Server 執行個體 |
Dim sqlApp As New SQLDMO.Application
Dim nl As SQLDMO.NameList
Dim i As Long
Set nl = sqlApp.ListAvailableSQLServers
For i = 1 To nl.Count
cboServers.AddItem nl.Item(i)
Next i
Dim sqlSvr As New SQLDMO.SQLServer
Dim db As SQLDMO.Database
sqlSvr.LoginSecure = True
sqlSvr.AutoReconnect = True
sqlSvr.Connect "(local)"
For Each db In sqlSvr.Databases
If Not db.SystemObject Then
lstDatabases.AddItem db.Name
End If
Next db
Dim sqlSvr As New SQLDMO.SQLServer
Dim backup As New SQLDMO.Backup
sqlSvr.LoginSecure = False
sqlSvr.Connect "ServerName", "sa", "password"
Set backup.Database = "MyDB"
backup.Action = SQLDMOBackup_Database
backup.Files = "D:\Backup\MyDB.bak"
backup.SQLBackup sqlSvr
SQL-DMO 是 SQL Server 早期自動化管理的利器。維護舊專案時掌握核心物件模型與連線模式,可快速定位問題;新開發請全面轉向 SMO 或 PowerShell (sqlserver 模組)。