A network-related or instance-specific error occurred while establishing a connection to SQL Server
Se aplica a: SQL Server
Al conectarse a una instancia de SQL Server, puede encontrar uno o varios de los siguientes mensajes de error. En este artículo se proporcionan algunos pasos para ayudarle a solucionar estos errores, y aparecen las soluciones de los problemas más simples a los más complejos.
Mensajes de error
Los mensajes de error completos varían en función de la biblioteca cliente que se usa en la aplicación y el entorno del servidor. Puede comprobar si encuentra uno de los siguientes mensajes de error:
"A network-related or instance-specific error occurred while establishing a connection to SQL Server Compruebe que el nombre de instancia es correcto y que SQL Server está configurado para permitir conexiones remotas"
proveedor: Named Pipes Provider, error: 40 - No se pudo abrir una conexión con SQL Server (Microsoft SQL Server, Error: 53)
Error relacionado con la red o específico de instancia al establecer conexión con el servidor SQL Server. No se encontró el servidor o no se pudo acceder a él. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para permitir conexiones remotas.Proveedor: proveedor de canalizaciones con nombre, error: 40; no se pudo abrir una conexión a SQL Server (Microsoft SQL Server, error: 53)
Proveedor: proveedor TCP, error: 0; no se conoce el host. (Microsoft SQL Server, error: 11001)
proveedor: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified
Error relacionado con la red o específico de instancia al establecer conexión con el servidor SQL Server. No se encontró el servidor o no se pudo acceder a él. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para permitir conexiones remotas.Proveedor: interfaces de red de SQL, error: 26; error al ubicar servidor o la instancia especificados
Tiempo de espera de inicio de sesión expirado
Error de vínculo de datos de cliente nativo de SQL Server[Cliente nativo de Microsoft SQL Server 10.0]: Tiempo de espera de inicio de sesión expirado
[Cliente nativo de Microsoft SQL Server 10.0]: Se ha producido un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. No se encuentra el servidor o no se puede acceder a él. Compruebe si el nombre de instancia es correcto y si SQL Server está configurado para permitir conexiones remotas. Para obtener más información, consulte Libros en pantalla de SQL Server.
[Cliente nativo de Microsoft SQL Server 10.0]: Interfaces de red de SQL Server: Error Localizando Servidor/Instancia Especificada [xFFFFFFFF].
Ha fallado un intento de conexión porque la parte conectada no ha respondido correctamente tras un periodo de tiempo, o ha fallado la conexión establecida porque el host conectado no ha respondido
Error relacionado con la red o específico de instancia al establecer conexión con el servidor SQL Server. No se encontró el servidor o no se pudo acceder a él. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para permitir conexiones remotas.proveedor: proveedor TCP, error: 0
Hubo un error en un intento de conexión porque la parte conectada no respondió correctamente después de un período de tiempo o hubo un error en la conexión establecida porque el host conectado no pudo responder.
Microsoft SQL Server, error: 10060
proveedor: Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión con SQL Server
Error relacionado con la red o específico de instancia al establecer conexión con el servidor SQL Server. No se encontró el servidor o no se pudo acceder a él. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para permitir conexiones remotas.Proveedor: proveedor de canalizaciones con nombre, error: 40, no se pudo abrir una conexión a SQL Server
Microsoft SQL Server, error: 53
No se ha encontrado la ruta de acceso de la red
[Microsoft][SQL Servidor Cliente Nativo 11.0]Proveedor TCP: No se ha podido establecer la conexión porque la máquina de destino la ha rechazado activamente
Error de vínculo de datos de cliente nativo de SQL Server[Microsoft] [SQL Server Native Client 11.0] proveedor TCP: no se estableció ninguna conexión porque el equipo de destino la rechazó.
[Microsoft] [SQL Server Native Client 11.0] tiempo de espera de inicio de sesión expirado.
[Microsoft][SQL Server Native Client 11.0] error relacionado con la red o específico de instancia al establecer conexión con el servidor SQL Server. No se encuentra el servidor o no se puede acceder a él. Compruebe si el nombre de instancia es correcto y si SQL Server está configurado para permitir conexiones remotas. Para obtener más información, consulte Libros en pantalla de SQL Server.
"SQL Server no existe o acceso denegado"
Este error suele significar que el cliente no puede encontrar la instancia de SQL Server. Este problema se produce debido a al menos uno de los siguientes motivos:
- El nombre del equipo que aloja el servidor SQL es incorrecto.
- La instancia no indica la dirección IP correcta.
- El número de puerto TCP no se especifica correctamente.
Nota:
Para solucionar los problemas de conectividad en escenarios de alta disponibilidad, consulte los siguientes artículos:
Error de Windows 233: No hay ningún proceso en el otro extremo de la canalización
El mensaje completo es:
La conexión con el servidor se ha establecido correctamente, pero se ha producido un error durante el proceso de inicio de sesión. (proveedor: Proveedor de memoria compartida, error: 0 - No hay ningún proceso en el otro extremo de la canalización). (Microsoft SQL Server, error: 233)
Este mensaje significa que SQL Server no escucha en el protocolo Memoria compartida o Canalizaciones con nombre.
Recopilación de información para solucionar el error
Se recomienda recopilar la información que se muestra en esta sección mediante una de las siguientes opciones antes de continuar con los pasos reales para solucionar el error.
Opción 1: usar la herramienta SQL Check para recopilar la información necesaria
Si puede iniciar sesión localmente en el equipo SQL Server y tener acceso de administrador, use SQLCHECK. Esta herramienta proporciona la mayor parte de la información necesaria para solucionar problemas en un archivo. Revise la página principal de la herramienta para saber más sobre su uso y la información que recopila. También puede leer la página de los requisitos previos y la lista de comprobación recomendados.
Opción 2: recopilar los datos individualmente mediante los siguientes procedimientos
Obtener el nombre de instancia del administrador de configuración
En el servidor que hospeda la instancia de SQL Server, use el administrador de configuración de SQL Server para comprobar el nombre de la instancia:
Nota:
El administrador de configuración se instala automáticamente en el equipo cuando se instala SQL Server. Las instrucciones para iniciar el administrador de configuración varían ligeramente según las versiones de SQL Server y Windows que use. Para obtener detalles específicos de su versión, consulte el administrador de configuración de SQL Server.
Inicie sesión en el equipo que hospeda la instancia de SQL Server.
Inicie el administrador de configuración de SQL Server.
En el panel de la izquierda, seleccione SQL Server Services (Servicios SQL Server).
En el panel derecho, compruebe el nombre de la instancia del motor de base de datos.
- SQL SERVER (MSSQLSERVER) indica una instancia predeterminada de SQL Server. El nombre de la instancia por defecto es <nombre del ordenador>.
- SQL SERVER (<nombre de instancia>) indica una instancia con nombre de SQL Server. El nombre de la instancia nombrada es <nombre del ordenador><nombre de la instancia>.
Obtener la dirección IP del servidor proxy.
Puede usar los siguientes pasos para obtener la dirección IP del equipo que hospeda la instancia de SQL Server.
En el menú Inicio, seleccione Ejecutar. En la ventana Ejecutar, escriba cmd y seleccione Aceptar.
En la ventana Símbolo de sistema, escriba ipconfig/all and then press Enter. Anote la dirección IPv4 y la dirección IPv6.
Nota:
SQL Server puede conectarse mediante la versión 4 del protocolo IP o la versión 6 del protocolo IP. La red podría permitir ambas.
Obtener el puerto TCP de la instancia
En la mayoría de los casos, se conecta al motor de base de datos en otro equipo mediante el protocolo TCP. Para obtener el puerto TCP de la instancia, siga estos pasos:
Use SQL Server Management Studio en el equipo que ejecuta SQL Server y conéctese a la instancia de SQL Server. En Explorador de objetos, expanda Administración, Registros de SQL Server y, a continuación, haga doble clic en el registro actual.
En el Visor de archivos de registro, seleccione Filtrar en la barra de herramientas. En el cuadro El mensaje contiene texto, escriba servidor está escuchando en, seleccione Aplicar filtro y, a continuación, haga clic en Aceptar.
Debe aparecer un mensaje como "El servidor está escuchando en [ 'any' <ipv4> 1433]".
Este mensaje indica que la instancia de SQL Server está escuchando en todas las direcciones IP de este equipo (para la versión 4 de IP) y el puerto TCP 1433. (El puerto TCP 1433 suele ser el puerto utilizado por el motor de base de datos o la instancia predeterminada de SQL Server. Sólo una instancia de SQL Server puede utilizar este puerto. Si hay más de una instancia de SQL Server instalada, algunas instancias deben utilizar otros números de puerto). Anote el número de puerto utilizado por la instancia de SQL Server a la que está intentando conectarse.
Nota:
- Es probable que aparezca la dirección IP 127.0.0.1. Se denomina dirección del adaptador de bucle invertido. Solo los procesos del mismo equipo pueden usar la dirección IP para conectarse.
- También puede ver el registro de errores de SQL Server mediante un editor de texto. De forma predeterminada, el registro de errores se encuentra en Archivos de programa \Microsoft SQL. Server\MSSQL.n\MSSQL\LOG\ERRORLOG y archivos ERRORLOG.n. Para obtener más información, consulte Visualizar el registro de errores de SQL Server.
Paso 1: comprobar que la instancia se está ejecutando
Opción 1: Usar el archivo de salida SQLCHECK
- Búsqueda el archivo de salida SQLCHECK para "información de SQL Server".
- En la sección titulada "Servicios de interés", busque la instancia de SQL Server en las columnas Nombre e Instancia (para instancias con nombre) y compruebe su estado mediante la columna Iniciado. Si el valor es Verdadero, se han iniciado los servicios. De lo contrario, el servicio no se está ejecutando actualmente.
- Si el servicio no se está ejecutando, inicie el servicio mediante SQL Server Management Studio, Administrador de configuración de SQL Server, PowerShell o applet Servicios.
Opción 2: Usar el Administrador de configuración de SQL Server
Para comprobar que la instancia se está ejecutando, seleccione SQL Server Services en Administrador de configuración de SQL Server y compruebe el símbolo por la instancia de SQL Server.
- Una flecha verde indica que se está ejecutando una instancia.
- Un cuadrado rojo indica que una instancia se ha detenido.
Si la instancia se ha detenido detenida, haga clic con el botón derecho en la instancia y seleccione Iniciar. A continuación, se inicia la instancia del servidor y el indicador se convierte en una flecha verde.
Opción 3: usar comandos de PowerShell
Puede usar el siguiente comando en PowerShell para comprobar el estado de los servicios SQL Server en el sistema:
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -like "sql server*"}
Puede usar el siguiente comando para buscar en el archivo de registro de errores la secuencia específica "SQL Server está listo para las conexiones de cliente. Este es un mensaje informativo. No se requiere ninguna acción del usuario.":
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog | Select-String "SQL Server is now ready for client connections."
Paso 2: comprobar que se está ejecutando el servicio SQL Server Browser
Nota:
Este paso solo es necesario para solucionar problemas de conectividad con instancias con nombre.
Opción 1: Usar el archivo de salida SQLCHECK
- Búsqueda el archivo de salida SQLCHECK para "información de SQL Server".
- En la sección titulada "Servicios de interés", busque SQLBrowser en la columna Nombre y compruebe su estado mediante la columna Iniciado. Si el valor es Verdadero, se inició el servicio. De lo contrario, el servicio no se está ejecutando actualmente y debe iniciarlo. Para obtener más información, consulte Iniciar, Detener, pausar, reanudar y reiniciar los servicios SQL Server.
Opción 2: Usar el Administrador de configuración de SQL Server
Para conectarse a una instancia con nombre, el servicio SQL Server Browser debe estar en ejecutándose. En Administrador de configuración de SQL Server, localice el servicio SQL Server Browser y compruebe que se está ejecutando. Si no se está ejecutando, inicie el servicio. El servicio SQL Server Browser no es necesario para las instancias predeterminadas.
Para obtener más información sobre el uso del servicio SQL Server Browser en su entorno, consulte SQL Server servicio Browser.
Para obtener más información sobre cómo detener e iniciar los servicios SQL, vea Iniciar, detener, pausar, reanudar y reiniciar los servicios SQL Server.
Nota:
Si no puede ejecutar el servicio SQL Server Browser en su entorno, consulte Conectar a una instancia con nombre de SQL Server sin el servicio SQL Server Browser.
Paso 3: comprobar el nombre del servidor en la cadena de conexión
A menudo se producen errores cuando se especifica un nombre de servidor incorrecto en la cadena de conexión. Asegúrese de que el nombre del servidor coincide con el que recuperó en los pasos anteriores.
Nota:
Si usa la herramienta SQLCHECK, revise los valores de Nombre de NetBios/FQDN en la sección Información del equipo del archivo de salida.
- Para obtener ejemplos de cadenas de conexión, consulte Cadenas de conexión de SQL Server.
- Para obtener ejemplos más detallados, vea Prueba de concepto al conectarse a SQL mediante ADO.NET en Página de inicio para programar el cliente SQL.
Paso 4: comprobar los alias las máquinas clientes
Los alias se usan a menudo en los entornos clientes cuando se conecta a SQL Server con un nombre alternativo o cuando hay problemas de resolución de nomenclatura en la red. Se crean mediante Administrador de configuración de SQL Server o la utilidad de red de cliente. Un alias incorrecto puede hacer que las conexiones de las aplicaciones se emparejen con el servidor incorrecto, lo que da lugar a un error. Use los métodos siguientes para buscar alias incorrectos. También puede usar una herramienta (como SQLCHECK) en el equipo cliente para buscar alias u otras configuraciones relacionada con la conectividad en una máquina cliente.
Nota:
Las siguientes opciones solo se aplican a las aplicaciones que usan SQL Server Native Client para conectarse a SQL Server.
Opción 1: Usar el archivo de salida SQLCHECK
- En el archivo de salida SQLCHECK, busque la cadena Alias SQL. (Esta cadena estará dentro de la sección Seguridad del cliente e información sobre controladores del archivo)
- Revise las entradas de la tabla. Si no hay ninguna, no hay alias en el equipo. Si hay una, revise la información para asegurarse de que el nombre del servidor y el número de puerto están establecidos en los valores correctos.
Ejemplo de resultado:
Alias SQL:
Alias Name Protocol Server Name Port 32-bit
---------- -------- ------------ ---- ------
prodsql TCP prod_sqlserver 1430
La salida indica que prodsql
es un alias para un SQL Server llamado prod_sqlserver
que se ejecuta en el puerto 1430.
Opción 2: Comprobar los alias en el Administrador de configuración de SQL Server
En Administrador de configuración de SQL Server, expanda SQL Server Native Client Configuration (Configuración del cliente nativo de SQL Server) y seleccione Alias.
Compruebe si se ha definido algún alias para el servidor al que intenta conectarse.
En caso de que sí, siga estos pasos:
- Abra el panel Propiedades del alias.
- Cambie el nombre del valor en el campo Nombre de alias (por ejemplo, si el nombre del servidor es MySQL, cámbielo a MySQL_test) y vuelva a intentar la conexión. Si la conexión funciona, su alias es incorrecto y puede proceder de una configuración antigua que ya no es necesaria. Si la conexión no funciona, cambie el nombre del alias al original y vaya al paso siguiente.
- Compruebe los parámetros de conexión para el alias y asegúrese de que son correctos. Los siguientes escenarios comunes pueden causar problemas de conectividad:
- Dirección IP incorrecta para el campo Servidor. Asegúrese de que la dirección IP coincide con la entrada del archivo de registro de errores de SQL Server.
- Nombre de servidor incorrecto en el campo Servidor. Por ejemplo, su alias del servidor apunta al nombre de servidor correcto. Sin embargo, las conexiones producirán un error si el valor del parámetro de nombre del servidor es incorrecto.
- Formato de nombre de canalización incorrecto (suponiendo que se usa un alias de canalizaciones con nombre).
- Cuando se conecta a una instancia por defecto llamada Mydefaultinstance, el nombre de la tubería debe ser \Mydefaultinstance\pipe\sql\query.
- Cuando se conecta a una instancia con nombre MySQL\Nnamed, el nombre de la canalización debe ser \MySQL\pipe\MSSQL$Named\sql\query.
Opción 3: Comprobar los alias en Client Network Utility de SQL Server
- Abra Client Network Utility de SQL Server escribiendo cliconfg.exe en el comando Ejecutar.
- Siga el paso 2 de Opción 2: Comprobar los alias en el Administrador de configuración de SQL Server.
Paso 5: Comprobar la configuración del firewall
Puede comprobar la configuración del firewall en función de la instancia predeterminada o la instancia con nombre.
Nota:
Si usa firewalls de terceros en la red, los conceptos siguen siendo válidos. Sin embargo, es posible que tenga que trabajar con el administrador de red o consultar la documentación del producto de firewall para obtener más información sobre cómo configurar el firewall para permitir los puertos necesarios para la comunicación con SQL Server.
Instancia predeterminada de SQL Server
Normalmente, una instancia predeterminada se ejecuta en el puerto 1433. Algunas instalaciones también usan un puerto no estándar (distinto del 1433) para ejecutar instancias de SQL. El firewall puede bloquear cualquiera de los puertos. Para comprobar el número del puerto, siga estos pasos:
- Determine el puerto en el que se ejecuta la instancia de SQL, consulte Obtener el puerto TCP de la instancia.
-
- Si SQL Server está configurado para escuchar en el puerto 1433, asegúrese de que los firewalls de la red entre el cliente y el servidor permiten el tráfico en dicho puerto. Revise Configurar un firewall de Windows para acceder al Motor de base de datos y trabaje con el administrador de red para implementar las soluciones necesarias.
- Si su instancia predeterminada de SQL Server no usa el 1433, intente anexar el número de puerto de SQL Server al nombre del servidor mediante el formato
<servername>,<portnumber>
y vea si funciona. Por ejemplo, el nombre de la instancia de SQL es MySQLDefaultinstance y se ejecuta en el puerto 2000. Especifique el nombre del servidor como MySQLServer, 2000 y vea si funciona.- Si no funciona, indica que el firewall está bloqueando el puerto. Puede seguir las instrucciones de Configurar un firewall de Windows para acceder al Motor de base de datos o trabajar con el administrador de red para añadir el puerto a la lista de exclusión del firewall.
- Si funciona, indica que el firewall permite la comunicación a través de ese puerto. Debe cambiar la cadena de conexión para usar el número de puerto y el nombre del servidor en la cadena de conexión de la aplicación.
Instancia con nombre de SQL Server
Si la instancia de SQL es una con nombre, se puede configurar para usar puertos dinámicos o un puerto estático. En cualquier caso, las bibliotecas de red subyacentes consultan el servicio SQL Server Browser que se ejecuta en el equipo con SQL Server a través del puerto UDP 1434 para enumerar el número de puerto de la instancia con nombre. Si un firewall entre el cliente y el servidor bloquea este puerto UDP, la biblioteca cliente no puede determinar el puerto (un requisito para la conexión) y se produce un error en la conexión. Para comprobar la conexión, puede usar uno de los siguientes métodos:
Método 1: Compruebe la conexión especificando el número de puerto en la cadena de conexión.
- Determine el puerto en el que se ejecuta la instancia de SQL, consulte Obtener el puerto TCP de la instancia.
- Intente conectarse a la instancia con nombre mediante el número de puerto anexado al nombre del servidor en el formato
<servername\instancename>,<portnumber>
y vea si funciona. Por ejemplo, si el nombre de la instancia de SQL es MySQL\Namedinstance y se ejecuta en el puerto 3000, especifique el nombre del servidor como MySQL\Namedinstance,3000.- Si funciona, indica que el firewall está bloqueando el puerto UDP 1434 o que la instancia está oculta de SQL Server Browser.
- Si no funciona, indica una de las situaciones siguientes:
Método 2: Compruebe la conexión mediante la herramienta PortQryUI.
Use la herramienta PortQryUI con la instancia con nombre y observe la salida resultante. Es posible que vea un mensaje que indica que el puerto UDP 1434 está filtrado. Este mensaje indica que el puerto está bloqueado en la red. Para obtener instrucciones sobre cómo usar la herramienta, consulte Uso de la herramienta PortQryUI con SQL Server.
Determine si la instancia de SQL Server está escuchando en puertos dinámicos o estáticos. Después, use el método siguiente que sea relevante para su escenario. Si no está seguro, consulte Cómo comprobar si SQL Server está escuchando en un puerto dinámico o un puerto estático.
- Escenario 1: Puertos dinámicos. En este caso, asegúrese de que se inicie el servicio SQL Server Browser y que el puerto UDP 1434 no esté bloqueado en el firewall entre el cliente y el servidor. Si no puede hacer ninguna de estas cosas, debe cambiar la instancia de SQL Server a un puerto estático y usar el procedimiento documentado en Configurar un servidor para escuchar en un puerto TCP específico.
- Escenario 2: Configuración de puerto estático. SQL Server Browser no se está ejecutando o UDP 1434 no se puede abrir en el firewall. En este caso, asegúrese de especificar el puerto estático en la cadena de conexión y de que el firewall no bloquee el puerto. Para obtener más información, consulte Configurar un firewall de Windows para acceder al Motor de base de datos.
Paso 6: Comprobar los protocolos habilitados en SQL Server
En algunas instalaciones de SQL Server, las conexiones al Motor de base de datos desde otro equipo no están habilitadas a menos que un administrador las active manualmente. Puede usar una de las siguientes opciones para comprobar y habilitar los protocolos necesarios a fin de permitir conexiones remotas al Motor de base de datos de SQL Server.
Opción 1: Usar el archivo de salida SQLCHECK
Búsqueda el archivo de salida SQLCHECK para la sección "Detalles de SQL Server instancia" y busque la sección de información de la instancia de SQL Server.
En ella, encuentre los valores enumerados en la tabla siguiente para determinar si los protocolos de SQL Server están habilitados:
Nombre del valor Implicación Más información Memoria compartida habilitada Puede ser verdadero o falso: solo afecta a las conexiones locales. Creación de una cadena de conexión válida mediante el protocolo de memoria compartida Canalizaciones con nombre habilitadas Si es falso, se producirá un error en las conexiones locales y remotas mediante canalizaciones con nombre. Elección de un protocolo de red TCP habilitado Si es falso, se producirá un error en las conexiones locales y remotas mediante TCP/IP.
Nota La mayoría de las instalaciones de SQL Server usan TCP/IP como protocolo de comunicación entre el servidor y el cliente.Elección de un protocolo de red Habilite los protocolos necesarios mediante el Administrador de configuración de SQL Server o SQL Server PowerShell. Para obtener más información, vea Habilitar o deshabilitar un protocolo de red de servidor.
Nota:
Después de habilitar un protocolo, el Motor de base de datos se debe detener y reiniciar para que el cambio surta efecto.
Opción 2: Usar el Administrador de configuración de SQL Server
Para habilitar las conexiones desde otro equipo mediante el Administrador de configuración de SQL Server, siga estos pasos:
- Abra el Administrador de configuración de SQL Server.
- En el panel izquierdo, expanda SQL Server Network Configuration (Configuración de red de SQL Server) y, después, seleccione la instancia de SQL Server a la que desea conectarse. En el panel derecho se enumeran los protocolos de conexión disponibles. La Memoria compartida normalmente está habilitada. Solo se puede usar desde el mismo equipo, por lo que la mayoría de las instalaciones dejan habilitada la Memoria compartida. Para conectarse a SQL Server desde otro equipo, use TCP/IP. Si TCP/IP no está habilitado, haga clic con el botón derecho en TCP/IP y seleccione Habilitar.
- Si cambia la configuración habilitada para cualquier protocolo, reinicie el Motor de base de datos. En el panel de la izquierda, seleccione SQL Server Services (Servicios SQL Server). En el panel izquierdo, haga clic con el botón derecho en la instancia del Motor de base de datos y luego seleccione Reiniciar.
Paso 7: Probar la conectividad TCP/IP
La conexión a SQL Server mediante TCP/IP requiere que Windows establezca la conexión. Puede seguir los pasos siguientes para probar la conectividad TCP mediante la herramienta ping.
- En el menú Inicio, seleccione Ejecutar. En la ventana Ejecutar, escriba cmd y seleccione Aceptar.
- En la ventana Símbolo del sistema, escriba
ping
y la dirección IP del equipo que ejecuta SQL Server. Por ejemplo:- IPv4:
ping 192.168.1.101
- IPv6:
ping fe80::d51d:5ab5:6f09:8f48%11
- IPv4:
- Si la red está configurada correctamente,
ping
devuelveReply from <IP address>
, seguido de información adicional. Siping
devuelveDestination host unreachable
oRequest timed out
, TCP/IP no está configurado correctamente. En este momento, los errores indican un problema con el equipo cliente, el equipo servidor o algo relacionado con la red, como un enrutador. Para solucionar problemas de red, consulte Solución de problemas avanzada de TCP/IP. - Si la prueba
ping
se realiza correctamente mediante la dirección IP, compruebe si el nombre del equipo se puede resolver en la dirección TCP/IP. En el equipo cliente, en la ventana Símbolo del sistema, escriba ping y el nombre del equipo que ejecuta SQL Server. Por ejemplo,ping newofficepc
. - Si el ping a la dirección IP se realiza correctamente, pero el ping al nombre del equipo devuelve
Destination host unreachable
oRequest timed out
, es posible que tenga información de resolución de nombres antigua (obsoleta) almacenada en caché en el equipo cliente. Escribaipconfig /flushdns
para borrar la memoria caché DNS (Dynamic Name Resolution). Después, vuelva a hacer ping al equipo por nombre. Cuando la memoria caché DNS está vacía, el equipo cliente comprueba la información más reciente sobre la dirección IP del equipo servidor. - Si la red está configurada correctamente,
ping
devuelveReply from <IP address>
, seguido de información adicional. Si puede hacer ping correctamente al equipo servidor por dirección IP, pero recibe un error comoDestination host unreachable
oRequest timed out
al hacer ping por nombre de equipo, la resolución de nombres no está configurada correctamente. Para obtener más información, vea Cómo solucionar problemas de TCP/IP básicos. La resolución correcta de nombres no es necesaria para conectarse a SQL Server. Sin embargo, si el nombre del equipo no se puede resolver en una dirección IP, se deben establecer conexiones para especificar la dirección IP. La resolución de nombres se puede corregir más adelante.
Nota:
También puede usar el cmdlet Test-NetConnection o Test-Connection para probar la conectividad TCP según la versión de PowerShell instalada en el equipo. Para obtener más información sobre el cmdlet de PowerShell, consulte Información general sobre cmdlet.
Paso 8: Probar la conexión local
Antes de solucionar un problema de conexión desde otro equipo, pruebe la capacidad de conectarse desde una aplicación cliente instalada localmente en el equipo que ejecuta SQL Server. La conexión local evita problemas con redes y firewalls.
Este procedimiento requiere SQL Server Management Studio. Si no tiene instalado Management Studio, consulte Descargar SQL Server Management Studio (SSMS).
Si no puede instalar Management Studio, puede probar la conexión mediante la utilidad sqlcmd.exe. sqlcmd.exe se instala con el Motor de base de datos. Para obtener información sobre sqlcmd.exe, vea Utilidad sqlcmd.
Entre en el equipo donde se instala SQL Server mediante un inicio de sesión que pueda acceder a SQL Server. Durante la instalación, SQL Server requiere que se especifique al menos un inicio de sesión como administrador de SQL Server. Si no conoce a ningún administrador, consulte Conectarse a SQL Server cuando los administradores del sistema no tienen acceso.
En la página Inicio, escriba SQL Server Management Studio o, en el menú Inicio de las versiones anteriores de Windows, seleccione Todos los programas, Microsoft SQL Server y, después, SQL Server Management Studio.
En el menú desplegable Conectar, seleccione Motor de base de datos. En el cuadro Autenticación, seleccione Autenticación de Windows. En el cuadro Nombre del servidor, escriba uno de los siguientes tipos de conexión:
Conexión a Tipo Ejemplo Instancia predeterminada <computer name>
ACCNT27
Instancia con nombre <computer name\instance name>
ACCNT27\PAYROLL
Nota:
Al conectarse a SQL Server desde una aplicación cliente en el mismo equipo, se usa el protocolo de memoria compartida. La memoria compartida es un tipo de canalización con nombre local, por lo que a veces se producen errores relacionados con las canalizaciones.
Si recibe un error en este momento, debe resolverlo antes de continuar. Es posible que el inicio de sesión no esté autorizado para conectarse. Es posible que falte la base de datos predeterminada.
Nota:
No puede solucionar el problema sin suficiente información porque algunos mensajes de error se pasan al cliente de forma intencional. Se trata de una característica de seguridad para evitar proporcionar a un atacante información sobre SQL Server. Para ver los detalles sobre el error, consulte el registro de errores de SQL Server.
Si recibe el error 18456 Error de inicio de sesión para el usuario, el artículo de los Libros en pantalla MSSQLSERVER_18456 contiene información adicional sobre los códigos de error. El blog de Aaron Bertrand también tiene una amplia lista de códigos de error en Troubleshooting Error 18456 (vínculo externo). Puede ver el registro de errores mediante SSMS (si puede conectarse), en la sección Administración del Explorador de objetos. De lo contrario, puede ver el registro de errores con el programa Bloc de notas de Windows. La ubicación predeterminada varía según la versión y se puede cambiar durante la instalación. La ubicación predeterminada para SQL Server 2019 (15.x) es C:\Archivos de programa\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG.
Si puede conectarse mediante memoria compartida, pruebe la conexión utilizando TCP. Puede forzar una conexión TCP especificando
tcp:
antes del nombre. Estos son los ejemplos:Conexión a: Tipo: Ejemplo: Instancia predeterminada tcp:<computer name>
tcp:ACCNT27
Instancia con nombre tcp:<computer name/instance name>
tcp:ACCNT27\PAYROLL
Si puede conectarse mediante memoria compartida, pero no TCP, debe corregir el problema de TCP. El problema más probable es que TCP no esté habilitado. Para habilitar TCP, consulte Paso 6: Comprobar los protocolos habilitados en SQL Server.
Si su objetivo es conectarse mediante una cuenta que no sea de administrador, puede empezar por conectarse como administrador. Después, intente conectarse de nuevo con el inicio de sesión con autenticación de Windows o el inicio de sesión con autenticación de SQL Server que usa la aplicación cliente.
Paso 9: Probar de la conexión remota
Una vez que se pueda conectar mediante TCP en el mismo equipo, es el momento de intentar conectarse desde el equipo cliente. Puede usar cualquier aplicación cliente, pero, para evitar complicar la tarea, instale las herramientas de administración de SQL Server en el cliente. Después de la instalación, intente usar SQL Server Management Studio.
- Use SQL Server Management Studio en el equipo cliente e intente conectarse a través de la dirección IP y el número de puerto TCP en un formato de dirección IP coma número de puerto. Por ejemplo,
192.168.1.101,1433
. Si se produce un error en esta conexión, probablemente tenga uno de los siguientes problemas:- El
ping
de la dirección IP no funciona. Esto indica un problema general de configuración de TCP. Vuelva a la sección Paso 7: Probar la conectividad TCP/IP. - SQL Server no escucha en el protocolo TCP. Vuelva a la sección Paso 6: Comprobar los protocolos habilitados en SQL Server.
- SQL Server está escuchando en un puerto distinto del especificado. Vuelva a la sección Obtener el puerto TCP.
- El firewall bloquea el puerto TCP de SQL Server. Vuelva a la sección Paso 5: Comprobar la configuración del firewall.
- El
- Una vez que se conecte mediante la dirección IP y el número de puerto, revise los siguientes escenarios:
- Si se conecta a una instancia predeterminada que escucha en cualquier puerto distinto de 1433, debe usar el número de puerto en la cadena de conexión o crear un alias en el equipo cliente para conectarse a la instancia predeterminada. El servicio SQL Server Browser no puede enumerar los puertos de la instancia predeterminada.
- Si se conecta a una instancia con nombre, intente conectarse a la instancia con el formato dirección IP / nombre de instancia. (Por ejemplo,
192.168.1.101\<instance name>
.) Si esta acción no funciona, significa que el número de puerto no se devuelve al cliente. El problema está relacionado con su servicio SQL Server Browser, que proporciona el número de puerto de una instancia con nombre al cliente. Estas son las soluciones:- Inicie el servicio SQL Server Browser. Consulte las instrucciones para iniciar el explorador en el administrador de configuración de SQL Server.
- El firewall está bloqueando el servicio SQL Server Browser. Abra el puerto UDP 1434 en el firewall. Vuelva a la sección Paso 5: Comprobar la configuración del firewall. Asegúrese de que va a abrir un puerto UDP, no un puerto TCP.
- Un enrutador está bloqueando la información del puerto UDP 1434. La comunicación UDP (protocolo de datagrama de usuario) no está diseñada para pasar a través de enrutadores y evita que la red se llene de tráfico de prioridad baja. Puede configurar el enrutador para reenviar el tráfico UDP o puede proporcionar el número de puerto cada vez que se conecte.
- Si el equipo cliente usa Windows 7, Windows Server 2008 o un sistema operativo más reciente, el sistema operativo cliente podría eliminar el tráfico UDP porque la respuesta del servidor se devuelve desde una dirección IP diferente consultada. Esta acción es una función de seguridad que bloquea el "mapeo de origen suelto". Para obtener más información, consulte la sección Direcciones IP de varios servidores del artículo de Libros en línea Solución de problemas: Tiempo de espera expirado. (Este artículo es de SQL Server 2008 R2, pero los principios siguen siendo válidos. Puede configurar el cliente para utilizar la dirección IP correcta o proporcionar el número de puerto cada vez que se conecte).
- Una vez que se conecte mediante la dirección IP (o la dirección IP y el nombre de instancia de una instancia con nombre), intente conectarse mediante el nombre del equipo (o el nombre de equipo y el nombre de instancia de una instancia con nombre). Escriba
tcp:
delante del nombre del equipo para forzar una conexión TCP/IP. Por ejemplo, para la instancia predeterminada de un equipo denominado ACCNT27, usetcp:ACCNT27
. Para una instancia con nombre denominada PAYROLL, en ese equipo usetcp:ACCNT27\PAYROLL
. Si puede conectarse mediante la dirección IP, pero no con el nombre del equipo, tiene un problema de resolución de nombres. Vuelva a la sección Paso 7: Probar la conectividad TCP/IP. - Una vez que se conecte mediante el nombre del equipo que fuerza TCP, intente conectarse mediante el nombre del equipo sin forzar a TCP. Por ejemplo, para obtener una instancia predeterminada simplemente use un nombre de equipo como CCNT27. Para obtener una instancia con nombre, use el nombre del equipo y un nombre de instancia como ACCNT27\PAYROLL. Si puede conectarse al forzar TCP, pero no sin forzar TCP, es probable que el cliente use otro protocolo, como canalizaciones con nombre. Para resolver este problema, siga el paso:
- En el equipo cliente, use el administrador de configuración de SQL Server. En el panel izquierdo, expanda Cliente nativo SQL <versión> Configuración y, a continuación, seleccione Protocolos de cliente.
- En el panel derecho, asegúrese de que TCP/IP está habilitado. Si TCP/IP está deshabilitado, haga clic con el botón derecho en TCP/IP y seleccione Habilitar.
- Asegúrese de que el orden del protocolo para TCP/IP es un número menor que los protocolos de canalizaciones con nombre (o mediante versiones anteriores). Por lo general, debe dejar la memoria compartida como orden 1 y TCP/IP como orden 2. La memoria compartida solo se usa cuando el cliente y SQL Server se ejecutan en el mismo equipo. Todos los protocolos habilitados se prueban en orden hasta que uno se ejecuta correctamente, pero la memoria compartida se omite cuando la conexión no está en el mismo equipo.
Paso 10: Comprobación de permisos de usuario
Si usa canalizaciones con nombre para conectarse, compruebe si un usuario tiene permisos para iniciar sesión en Windows. Para obtener más información, vea Solución del problema de conexiones de canalizaciones con nombre.
Vea también
- Protocolos de red y bibliotecas de red
- Configuración de red de cliente
- Configuración de protocolos de cliente
- Solucionar problemas de conectividad en SQL Server
- Problema de red sistemático de 0200
- Conectar con una escucha de grupo de disponibilidad siempre activa
- Instancias de clúster de conmutación siempre activas (SQL Server)
- Solucionar problemas de conectividad y otros errores con Azure SQL Database y Azure SQL Managed Instance