Modo semplice per verificare la connettività a SQL Server dal client


18

Ai fini della risoluzione dei problemi, vorrei essere in grado di verificare se un client è in grado di connettersi a un'istanza di SQL Server, indipendentemente dall'applicazione che probabilmente non può connettersi a SQL Server.

Esiste un modo semplice (ciò significa che non è necessario installare software di terze parti) per farlo utilizzando gli strumenti di sistema di Windows predefiniti? Forse usando script o applicazioni di rete?


sul mio notebook posso creare una connessione odbc sqlserver e testare l'accesso a sqlserver. Ma non lo so se il driver odc sqlserver può essere trovato su tutti i client configurati per accedere a sqlserver. ma se fosse possibile trovare questo sarebbe il test successivo dopo aver verificato la raggiungibilità del prot sqlserver del server con telnet.
miracle173,

Risposte:


15

Se il server utilizza TCP / IP, il modo semplice è semplicemente telnet alla porta di SQL Server e vedere se si connette. Per impostazione predefinita, questa è la porta 1433, quindi dovrebbe funzionare:

telnet servername 1433

Ciò sarà probabilmente appropriato nella maggior parte dei casi.

Se utilizza una porta diversa o porte dinamiche (comuni con un'istanza denominata), dovrai determinare su quale porta è attualmente in ascolto. Controllare Gestione configurazione SQL Server per vedere se si tratta di una porta specifica o di porte dinamiche. Se sta usando porte dinamiche, fintanto che non hai più istanze sul server, netstat -abnè probabilmente il modo più semplice per trovare quello che sta usando. In caso contrario, esaminare il registro eventi di Windows o il registro errori di SQL Server per un messaggio che indica quale porta è in uso dall'istanza.

Se SQL Server utilizza Named Pipes, credo che se si è in grado di accedere alle condivisioni sulla macchina, si dispone di una connettività di rete adeguata. Questo articolo dice che puoi andare oltre e provare a connetterti alla condivisione $ IPC:

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

net use \\servername\IPC$

È scritto per SQL Server 2000, ma non immagino che questo aspetto sia cambiato molto, se non del tutto.


2
Non si vede se un client può "connettersi a un'istanza di SQL Server". Questo è solo un test per vedere se una porta è in ascolto.
Thomas Stringer,

4
... che sta vedendo se un sistema client "può connettersi a un'istanza di SQL Server, indipendentemente dall'applicazione che probabilmente non può connettersi a SQL Server". Qualsiasi cosa oltre la connettività di rete ha a che fare con problemi di applicazione.
db2,

22

Un semplice metodo di prova per la connettività SQL è quello di creare un file di testo vuoto, con estensione "UDL". Puoi crearlo in Blocco note. E può avere qualsiasi nome. Uso "TestSQL.UDL"

Salvalo sul desktop di un PC Windows e fai doppio clic su di esso.

Verrà visualizzata una finestra di dialogo "Proprietà collegamento dati" in cui è possibile inserire l'indirizzo IP del server SQL e anche un nome utente e una password SQL.

Fai clic sul pulsante "Verifica connessione" per vedere se riesci a connetterti.

inserisci qui la descrizione dell'immagine


Assicurarsi di fare clic sulla scheda Provider e selezionare il provider OLE DB giusto: "Provider Microsoft OLE DB per SQL Server"
DaveB

Dave, benvenuto e buona risposta. Puoi modificare il tuo post (angolo in basso a sinistra) per aggiungere queste informazioni aggiuntive. Quindi elimina il tuo commento.
Michael Green,

Questa è davvero un'ottima risposta perché funziona praticamente su qualsiasi server indipendentemente da cosa o cosa non è installato. Tutto ciò che serve è Blocco note. Grazie per questa ottima risposta, mi ha davvero aiutato a convincere il mio cliente che la connettività SQL funzionava.
robnick,

8

Se hai l' Microsoft.SqlServer.Smoassemblaggio nel tuo GAC sul computer locale, questo può essere fatto facilmente con PowerShell:

[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..."
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.