首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL-DMO 實作範例:列舉區域網路 SQL Server 執行個體

     編輯:關於SqlServer

完整程式碼 (VB6/VBA)

Private Sub Form_Load()
    Dim i As Long
    Dim sqlApp As SQLDMO.Application
    Dim serverList As SQLDMO.NameList

    ' 建立 Application 物件
    Set sqlApp = New SQLDMO.Application

    ' 取得可用伺服器清單
    Set serverList = sqlApp.ListAvailableSQLServers

    ' 填入下拉選單
    For i = 1 To serverList.Count
        cboServer.AddItem serverList.Item(i)
    Next i
End Sub

關鍵點解析

  1. SQLDMO.Application:進入點物件,提供枚舉、管理伺服器群組等高層功能。
  2. ListAvailableSQLServers():掃描網路廣播封包,回傳 NameList 集合。注意:
     • 需網路允許 UDP 1434 廣播。
     • 防火牆、跨子網、SQL Browser 服務停用會導致列舉不全。
     • 僅列舉「可見」執行個體(未勾選「隱藏執行個體」者)。
  3. NameList.Item(index):1-based 索引取得伺服器名稱字串。

進階:連線驗證並取得資料庫清單

Private Sub cboServer_Click()
    Dim sqlSvr As New SQLDMO.SQLServer
    Dim db As SQLDMO.Database
    
    lstDatabases.Clear
    
    On Error GoTo ErrHandler
    sqlSvr.LoginSecure = True          ' Windows 整合驗證
    sqlSvr.Connect cboServer.Text      ' 連線選取的伺服器
    
    For Each db In sqlSvr.Databases
        If Not db.SystemObject Then    ' 過濾系統資料庫
            lstDatabases.AddItem db.Name
        End If
    Next db
    Exit Sub

ErrHandler:
    MsgBox "連線失敗:" & Err.Description, vbCritical
End Sub

常見問題排查

現象可能原因解決
ListAvailableSQLServers 回傳空集合SQL Browser 服務未啟動 / 防火牆封鎖 UDP 1434啟動服務、開放防火牆
執行期錯誤 429 "ActiveX component can't create object"未註冊 SQLDMO.DLL / 版本不符重新註冊:regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQLDMO.DLL"
64 位元 Office/VBA 執行失敗SQL-DMO 為 32 位元 COMOffice 改裝 32 位元版,或遷移至 SMO/.NET

結語

SQL-DMO 列舉伺服器功能輕鬆實作「伺服器選擇」UI,是資料庫管理工具開發的常用起手式。注意網路環境與位元數相容性,即可穩定運作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved