Wie kann ich die Liste der verfügbaren SQL-Server in einer SQL-Servergruppe extrahieren? Ich plane, diese Liste in ein Kombinationsfeld in VB.NET einzufügen.
Antworten
Zu viele Anzeigen?
Chris Tybur
Punkte
1545
Wenn Sie nicht an SQL SMO gebunden sein wollten, was das ist, was Bens Artikel verwenden, können Sie so vorgehen, um alle SQL-Server in Ihrem Netzwerk zu ermitteln:
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
En SqlDataSourceEnumerator Klasse ist gut, weil sie Ihnen die SQL-Server-Erkennung direkt aus dem 2.0-Framework heraus ermöglicht.
Jiminy
Punkte
605
In C# habe ich Aufrufe an odbc32.dll verwendet
Zum Beispiel:
[DllImport("odbc32.dll", CharSet = CharSet.Ansi)]
private static extern short SQLBrowseConnect(
IntPtr hconn, StringBuilder inString,
short inStringLength, StringBuilder outString, short outStringLength, out short
outLengthNeeded);
Die Dokumentation für diese Funktion finden Sie unter MSDN