在局域網中怎樣求得共有多少台SQL Server服務器及每台服務器下有多少個數據庫

解决方案 »

  1.   

    在工程-引用里面引用:Microsoft SQLDMB Object Library 
    private sub from_load()
    '获取局域网SQL server服务器名称添加到组合框
        Dim dmo As SQLDMO.NameList
        Dim server As New SQLDMO.Application
        Dim i As Long
        Set dmo = server.ListAvailableSQLServers
        For i = 1 To dmo.Count
            servername.AddItem dmo(i)
        Next i
        servername.ListIndex = servername.ListCount - 2
    end sub
    '引用Microsoft SQLDMO Object Library
    '局域网里搜索SQL服务器
    '可以列出局域网内注册或未注册的SQL服务器
    '参数:用于显示服务器名的组合框
    Public Function GetLocalSQLServer(ByRef cmbServer As ComboBox) As Boolean
        Dim oSQLServerDMOApp   As SQLDMO.Application
        Dim oServerGroup   As SQLDMO.ServerGroup
        Dim oRegisteredServer   As SQLDMO.RegisteredServer
        Dim i   As Integer, j   As Integer
        Dim namX   As NameList
        Dim blnEquate As Boolean
        
        Screen.MousePointer = 11
        
        Set oSQLServerDMOApp = New SQLDMO.Application
        
        cmbServer.Clear
        '首先显示的是注册了的数据库
        '处理所有服务器组
        For Each oServerGroup In oSQLServerDMOApp.ServerGroups
            '处理每个注册了的服务器
            For Each oRegisteredServer In oServerGroup.RegisteredServers
                '添加每个名字到  combobox
                cmbServer.AddItem oRegisteredServer.Name
            Next
        Next
        Set oRegisteredServer = Nothing
        Set oServerGroup = Nothing    '接下来显示尚未注册的数据库
        Set namX = oSQLServerDMOApp.ListAvailableSQLServers
        For i = 1 To namX.Count
            blnEquate = False
            '检查该服务器是否已经被列出来
            For j = 0 To cmbServer.ListCount - 1
                If cmbServer.List(j) = namX.Item(i) Then
                    blnEquate = True
                    Exit For '退出内圈循环
                End If
            Next j
            If blnEquate = False Then
                cmbServer.AddItem namX.Item(i)
            End If
        Next i
        
        '显示第一个服务器
        If cmbServer.ListCount > 0 Then
            cmbServer.ListIndex = 0
        End If
        
        Set namX = Nothing
        Set oSQLServerDMOApp = Nothing
        
        Screen.MousePointer = 0
    End Function