Cursos
Módulo
Aprenda a conectar de forma segura un servidor de Azure SQL mediante un punto de conexión privado de Azure a través de Azure Portal, lo que garantiza una comunicación privada y segura con el servidor de SQL Server.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
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.
Los mensajes de error completos varían en función de la biblioteca cliente que se usa en la aplicación y en el entorno del servidor. Puede comprobar si encuentra uno de los siguientes mensajes de error:
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:
Nota
Para solucionar los problemas de conectividad en escenarios de alta disponibilidad, consulte los siguientes artículos:
El mensaje completo es:
Se estableció correctamente una conexión con el servidor, pero luego se produjo 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 está escuchando en el protocolo Memoria compartida o Canalizaciones con nombre.
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.
Si puede iniciar sesión localmente en el equipo con 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.
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 izquierdo, seleccione Servicios de SQL Server.
En el panel derecho, compruebe el nombre de la instancia del motor de base de datos.
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.
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 "Server is listening on [ '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 que usa el Motor de base de datos o la instancia predeterminada de SQL Server. Solo una instancia de SQL Server puede usar este puerto. Si se instala más de una instancia de SQL Server, algunas instancias deben usar otros números de puerto). Anote el número de puerto utilizado por la instancia de SQL Server a la que intenta conectarse.
Nota
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.
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.
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."
Nota
Este paso solo es necesario para solucionar problemas de conectividad con instancias con nombre.
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.
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 NetBios Name/FQDN en la sección Información del equipo del archivo de salida.
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.
Ejemplo:
Alias SQL:
Alias Name Protocol Server Name Port 32-bit
---------- -------- ------------ ---- ------
prodsql TCP prod_sqlserver 1430
La salida indica que prodsql
es un alias para una instancia de SQL Server denominada prod_sqlserver
que se ejecuta en el puerto 1430.
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:
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.
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:
<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 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.
<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.
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.
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.
Busque la sección "Detalles de la instancia de SQL Server" en el archivo de salida SQLCHECK 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. | Crear una cadena de conexión válida con 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. | Elegir 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. |
Elegir un protocolo de red |
Habilite los protocolos necesarios mediante el Administrador de configuración de SQL Server o SQL Server PowerShell. Para más información, consulte 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.
Para habilitar las conexiones desde otro equipo mediante el Administrador de configuración de SQL Server, siga estos pasos:
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.
ping
y la dirección IP del equipo que ejecuta SQL Server. Por ejemplo: ping 192.168.1.101
ping fe80::d51d:5ab5:6f09:8f48%11
ping
devuelve Reply from <IP address>
, seguido de información adicional. Si ping
devuelve Destination host unreachable
o Request 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.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
.Destination host unreachable
o Request timed out
, es posible que tenga información de resolución de nombres antigua (obsoleta) almacenada en caché en el equipo cliente. Escriba ipconfig /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.ping
devuelve Reply from <IP address>
, seguido de información adicional. Si puede hacer ping correctamente al equipo servidor por dirección IP, pero recibe un error como Destination host unreachable
o Request 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.
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: | Escriba: | 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.
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.
192.168.1.101,1433
. Si se produce un error en esta conexión, es probable que tenga uno de los siguientes problemas: 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.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: tcp:
delante del nombre del equipo para forzar una conexión TCP/IP. Por ejemplo, para la instancia predeterminada de un equipo denominado ACCNT27, use tcp:ACCNT27
. Para una instancia con nombre denominada PAYROLL, en ese equipo use tcp: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.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, consulte Solución de problemas del problema de conexiones de canalizaciones con nombre.
Cursos
Módulo
Aprenda a conectar de forma segura un servidor de Azure SQL mediante un punto de conexión privado de Azure a través de Azure Portal, lo que garantiza una comunicación privada y segura con el servidor de SQL Server.
Documentación
Administrador de configuración de SQL Server - SQL Server
Uso ddel cliente del Administrador de configuración de SQL Server
Solución de problemas de conectividad en SQL Server - SQL Server
Proporciona una introducción a los problemas comunes de conectividad en SQL Server y describe las herramientas para solucionar los problemas.
Mensaje de error cuando se conecta a SQL Server - SQL Server
En este artículo se proporcionan soluciones para el problema que se produce al conectarse a SQL Server mediante SSL.