获取SQL Server组中可用服务器的列表

时间:2008-09-29 05:57:03

标签: sql vb.net

如何在SQL服务器组中提取可用SQL服务器列表?我打算把这个列表放在VB.NET的组合框中。

3 个答案:

答案 0 :(得分:5)

我知道这样做的唯一方法是使用命令行:

osql -L

但是我发现下面的文章似乎解决了填充组合框的具体目标:

http://www.sqldbatips.com/showarticle.asp?ID=45

答案 1 :(得分:5)

如果你不想被绑定到SQL Ben's article使用的SQL SMO,你可以做这样的事情来发现你网络上的所有SQL服务器:

Private Sub cmbServer_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbServer.DropDown
    Dim oTable As Data.DataTable
    Dim lstServers As List(Of String)
    Try
        If cmbServer.Items.Count = 0 Then
            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
            oTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources

            For Each oRow As DataRow In oTable.Rows
                If oRow("InstanceName").ToString = "" Then
                    cmbServer.Items.Add(oRow("ServerName"))
                Else
                    cmbServer.Items.Add(oRow("ServerName").ToString & "\" & oRow("InstanceName").ToString)
                End If
            Next oRow
        End If
    Catch ex As Exception
        ErrHandler("frmLogin", "cmbServer_DropDown", ex.Source, ex.Message, Ex.InnerException)
    Finally
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

        If oTable IsNot Nothing Then
            oTable.Dispose()
        End If
    End Try
End Sub

SqlDataSourceEnumerator类很好,因为它为您提供了2.0框架之外的SQL服务器发现。

答案 2 :(得分:0)

在C#中我使用了对odbc32.dll的调用

例如:

[DllImport("odbc32.dll", CharSet = CharSet.Ansi)]

private static extern short SQLBrowseConnect(
IntPtr hconn, StringBuilder inString,
short inStringLength, StringBuilder outString, short outStringLength, out short 
outLengthNeeded);

该功能的文档位于MSDN