Manera fácil de verificar la conectividad a SQL Server desde el cliente

18

Para propósitos de resolución de problemas, me gustaría poder verificar si un cliente puede conectarse a una instancia de SQL Server, independientemente de la aplicación que posiblemente no pueda conectarse a SQL Server.

¿Hay alguna manera fácil (es decir, no tener que instalar software de terceros) para hacerlo utilizando las herramientas predeterminadas del sistema de Windows? ¿Quizás usando scripts o aplicaciones de red?

MicSim
fuente
en mi cuaderno puedo crear una conexión odbc sqlserver y probar el acceso al sqlserver. Pero no sé si el controlador odc sqlserver se puede encontrar en todos los clientes que están configurados para acceder a sqlserver. pero si se pudiera encontrar, esta sería la próxima prueba después de verificar la capacidad de alcance del servidor sqlserver prot con telnet.
miracle173

Respuestas:

15

Si el servidor usa TCP / IP, entonces la forma más simple es simplemente hacer telnet al puerto del Servidor SQL y ver si se conecta. Por defecto, ese es el puerto 1433, por lo que esto debería funcionar:

telnet servername 1433

Eso probablemente será apropiado en la mayoría de los casos.

Si está utilizando un puerto diferente o puertos dinámicos (comunes con una instancia con nombre), deberá determinar en qué puerto está escuchando actualmente. Verifique el administrador de configuración de SQL Server para ver si es un puerto específico o puertos dinámicos. Si utiliza puertos dinámicos, siempre que no tenga varias instancias en el servidor, netstat -abnprobablemente sea la forma más sencilla de encontrar lo que está utilizando. De lo contrario, busque en el registro de eventos de Windows o el registro de errores de SQL Server un mensaje que indique qué puerto está utilizando la instancia.

Si SQL Server está usando Canalizaciones con nombre, entonces creo que si puede acceder a recursos compartidos en la máquina, tiene una conectividad de red adecuada. Este artículo dice que puede ir más allá e intentar conectarse al IPC $ share:

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

net use \\servername\IPC$

Está escrito para SQL Server 2000, pero no creo que este aspecto haya cambiado mucho, si es que lo ha hecho.

db2
fuente
2
Eso no es ver si un cliente puede "conectarse a una instancia de SQL Server". Eso es solo una prueba para ver si un puerto está escuchando.
Thomas Stringer
44
... que es ver si un sistema cliente "puede conectarse a una instancia de SQL Server, independientemente de la aplicación que posiblemente no pueda conectarse al SQL Server". Cualquier cosa más allá de la conectividad de red se ocupa de problemas de aplicaciones.
db2
22

Un método de prueba simple para la conectividad SQL es crear un archivo de texto vacío, con una extensión de archivo "UDL". Puede crearlo en el Bloc de notas. Y puede tener cualquier nombre. Yo uso "TestSQL.UDL"

Guárdelo en el escritorio de una PC con Windows y haga doble clic en él.

Aparecerá un cuadro de diálogo "Propiedades de enlace de datos" donde puede ingresar la dirección IP del servidor SQL y también un nombre de usuario y contraseña de SQL.

Haga clic en el botón "Probar conexión" para ver si puede conectarse.

ingrese la descripción de la imagen aquí

DaveB
fuente
Asegúrese de hacer clic en la pestaña Proveedor y seleccione el proveedor OLE DB correcto: "Proveedor Microsoft OLE DB para SQL Server"
DaveB
Dave, bienvenido, y buena respuesta. Puede editar su publicación (esquina inferior izquierda) para agregar esta información adicional. Luego borra tu comentario.
Michael Green
Esta es realmente una gran respuesta porque funciona en prácticamente cualquier servidor, independientemente de qué o qué no esté instalado. Todo lo que necesitas es el Bloc de notas. Gracias por esta gran respuesta, realmente me ayudó a convencer a mi cliente de que la conectividad SQL estaba funcionando.
robnick
8

Siempre que tenga el Microsoft.SqlServer.Smoensamblaje en su GAC en la máquina local, esto se puede hacer fácilmente 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..."
}
Thomas Stringer
fuente