Einfache Möglichkeit, die Konnektivität zum SQL Server vom Client aus zu überprüfen

18

Zu Zwecken der Problembehandlung möchte ich überprüfen können, ob ein Client eine Verbindung zu einer SQL Server-Instanz herstellen kann, unabhängig von der Anwendung, die möglicherweise keine Verbindung zum SQL Server herstellen kann.

Gibt es eine einfache Möglichkeit (das heißt, Sie müssen keine Software von Drittanbietern installieren), um dies mit den Standard-Windows-Systemtools durchzuführen? Vielleicht mit Skripten oder Netzwerkanwendungen?

MicSim
quelle
Auf meinem Notebook kann ich eine SQLServer-ODBC-Verbindung erstellen und den Zugriff auf den SQLServer testen. Aber ich weiß nicht, ob der sqlserver odc-Treiber auf allen Clients gefunden werden kann, die für den Zugriff auf sqlserver konfiguriert sind. Wenn dies jedoch gefunden werden könnte, wäre dies der nächste Test, nachdem die Erreichbarkeit des SQLServer-Schutzes des Servers mit Telnet überprüft wurde.
miracle173

Antworten:

15

Wenn der Server TCP / IP verwendet, besteht die einfache Möglichkeit darin, eine Telnet-Verbindung zum SQL Server-Port herzustellen und zu überprüfen, ob eine Verbindung besteht. Standardmäßig ist das Port 1433, daher sollte dies funktionieren:

telnet servername 1433

Das wird wahrscheinlich in den meisten Fällen angemessen sein.

Wenn ein anderer Port oder dynamische Ports (gemeinsam mit einer benannten Instanz) verwendet werden, müssen Sie ermitteln, welchen Port sie derzeit überwachen. Überprüfen Sie den SQL Server-Konfigurationsmanager, um festzustellen, ob es sich um einen bestimmten Port oder um dynamische Ports handelt. Wenn dynamische Ports verwendet werden, netstat -abnist dies wahrscheinlich der einfachste Weg, um die verwendeten Instanzen zu ermitteln, sofern nicht mehrere Instanzen auf dem Server vorhanden sind . Anderenfalls durchsuchen Sie das Windows-Ereignisprotokoll oder das SQL Server-Fehlerprotokoll nach einer Meldung, die angibt, welcher Port von der Instanz verwendet wird.

Wenn SQL Server Named Pipes verwendet, verfügen Sie meines Erachtens über eine ausreichende Netzwerkkonnektivität , wenn Sie auf Freigaben auf dem Computer zugreifen können. In diesem Artikel heißt es, dass Sie noch weiter gehen und versuchen können, eine Verbindung zur IPC $ -Freigabe herzustellen:

http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx

net use \\servername\IPC$

Das ist für SQL Server 2000 geschrieben, aber ich kann mir nicht vorstellen, dass sich an diesem Aspekt viel geändert hat, wenn überhaupt.

db2
quelle
2
Es wird nicht angezeigt, ob ein Client eine Verbindung zu einer SQL Server-Instanz herstellen kann. Das ist nur ein Test, um zu sehen, ob ein Port lauscht.
Thomas Stringer
4
... um festzustellen, ob ein Client-System "unabhängig von der Anwendung, die möglicherweise keine Verbindung zum SQL Server herstellen kann, eine Verbindung zu einer SQL Server-Instanz herstellen kann". Alles, was über die Netzwerkverbindung hinausgeht, beschäftigt sich mit Anwendungsproblemen.
db2
22

Eine einfache Testmethode für die SQL-Konnektivität besteht darin, eine leere Textdatei mit der Dateierweiterung "UDL" zu erstellen. Sie können es im Editor erstellen. Und es kann einen beliebigen Namen haben. Ich benutze "TestSQL.UDL"

Speichern Sie es auf dem Desktop eines Windows-PCs und doppelklicken Sie darauf.

Ein Dialogfeld "Datenverknüpfungseigenschaften" wird geöffnet, in dem Sie die IP-Adresse des SQL-Servers sowie einen SQL-Benutzernamen und ein Kennwort eingeben können.

Klicken Sie auf die Schaltfläche "Verbindung testen", um festzustellen, ob Sie eine Verbindung herstellen können.

Bildbeschreibung hier eingeben

DaveB
quelle
Stellen Sie sicher, dass Sie auf die Registerkarte Provider klicken und den richtigen OLE DB-Provider auswählen: "Microsoft OLE DB-Provider für SQL Server"
DaveB,
Dave, willkommen und gute Antwort. Sie können Ihren Beitrag (linke untere Ecke) bearbeiten, um diese zusätzlichen Informationen hinzuzufügen. Dann lösche deinen Kommentar.
Michael Green
Dies ist wirklich eine großartige Antwort, da sie auf nahezu jedem Server funktioniert, unabhängig davon, was installiert ist oder nicht. Alles was Sie brauchen ist Notepad. Dank dieser großartigen Antwort konnte ich meinen Kunden wirklich davon überzeugen, dass die SQL-Konnektivität funktionierte.
Robnick
8

Vorausgesetzt, Sie haben die Microsoft.SqlServer.SmoAssembly in Ihrem GAC auf dem lokalen Computer, ist dies mit PowerShell problemlos möglich:

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null

$server = New-Object Microsoft.SqlServer.Management.Smo.Server("YourSqlServerName")

# do a simple operation to see if you can get data
Try {
    $server.Version | Out-Null
    Write-Host "SQL Server connection successful!!!"
}
Catch [System.Exception] {
    Write-Host "Error connecting to SQL Server..."
}
Thomas Stringer
quelle