1047: No se pudo establecer una conexión con la instancia de SQL Server [NombreServidor\Instancia]
Síntoma
Al intentar conectarse a una base de datos del sistema BarTender de forma remota, puede aparecer el siguiente mensaje de error:
#1047: No se pudo establecer una conexión con la instancia de SQL-Server [Servername\Instance].
Aplicable a
BarTender 2019 y versiones posteriores
Diagnóstico
- Instale SQL Server Management Studio también en el equipo cliente.
- Conéctese desde SQL Management Studio a la instancia centralizada de SQL Server usando las mismas credenciales de usuario que se están utilizando a través del asistente de la base de datos del sistema.
Si esto falla, podría indicar que SQL Server no está configurado correctamente.
Solución
Configurar los permisos necesarios
- Active la autenticación en modo mixto en el servidor si planea usar credenciales de SQL Server:
- En SQL Server Management Studio > Object Explorer, haga clic derecho en el servidor y seleccione Propiedades.
- En la página de Seguridad, bajo Autenticación del servidor, seleccione el nuevo modo de autenticación y luego haga clic en OK
- Otorgue permisos a la cuenta que se utiliza para conectarse a la base de datos del sistema BarTender. Consulte el artículo enlazado para más información sobre cómo establecer los permisos de la cuenta para Configurar permisos para una base de datos del sistema (Video - 5:45)
- Determine si la conexión se realizará usando credenciales de Windows o de SQL Server (se recomienda usar credenciales de SQL Server).
- Si los problemas continúan, pruebe las siguientes recomendaciones de configuración:
Si la base de datos del sistema se ha configurado en el equipo A y hay problemas para conectarse a la base de datos del sistema de forma remota desde el equipo B (en la edición EA, usando SQL Express), pruebe los siguientes consejos para solucionar el problema.
- En lugar de usar la instancia con nombre, intente usar la dirección IP y el puerto (generalmente 1433) al conectarse a la instancia remota de SQL Server.
- Si prefiere usar la instancia con nombre, SQL Server requiere una configuración previa (ver más abajo).
Habilitar conexiones remotas en la instancia de SQL Server
- Abra SQL Management Studio.
- Haga clic derecho en el nombre del servidor en el panel izquierdo y seleccione Propiedades, luego Conexiones y asegúrese de que la casilla Permitir conexiones remotas a este servidor esté seleccionada como se muestra a continuación.
Configurar SQL Express Server para escuchar en un puerto estático
- Abra SQL Server Configuration Manager y haga clic en SQL Server Services en el panel izquierdo.
- Utilice la columna Process ID (PID) (centro) para consultar la lista de IDs de proceso de cada servicio en ejecución. Identifique el PID en la fila de SQL Server y el puerto en el que ese PID está escuchando escribiendo lo siguiente en la línea de comandos:
netstat -ano | find /i “[PID-Number-Of-SQL-Server]"
Según los detalles mostrados en la imagen anterior, la sintaxis es la siguiente:netstat -ano | find /i “668”
- Los resultados se muestran a continuación:
- No hay resultados del comando ejecutado en el paso 3 porque el protocolo TCP/IP está deshabilitado y debe habilitarse. En SQL Server Configuration Manager haga clic en SQL Server Network Configuration en el panel izquierdo y haga clic derecho sobre el protocolo TCP/IP. Seleccione Habilitar.
- Reinicie el servicio de SQL Server e identifique el ID de proceso asignado al servicio de SQL.
- En la línea de comandos ejecute el comando:
netstat -ano | find /i “23444”
- Los resultados se muestran a continuación:
- En SQL Server Configuration Manager, haga clic en SQL Server Network Configuration en el panel izquierdo y haga clic derecho sobre el protocolo TCP/IP.
- Vaya a Propiedades > Dirección IP y desplácese hasta la sección IPAll. Elimine el valor de TCP Dynamic Ports (no ingrese cero 0).
- Ingrese el puerto 1433 en TCP Port. Haga clic en Aplicar y luego en OK.
- Reinicie el servicio de SQL Server, identifique el nuevo ID de proceso asignado al servicio de SQL y en la línea de comandos ejecute el comando:
netstat -ano | find /i “5088”
- Los resultados se muestran a continuación:
En este punto, SQL Express está configurado para escuchar en el puerto estándar 1433.
Activar el servicio SQL Server Browser
- Abra SQL Server Configuration Manager y haga clic en SQL Server Services en el panel izquierdo. Haga clic derecho en SQL Server Browser service y seleccione Propiedades.
- Vaya a la pestaña Servicio y, en la opción Modo de inicio, cambie el tipo de inicio a Automático. Haga clic en Aplicar y Ok.
- Haga clic en el botón Iniciar para iniciar el servicio SQL Browser.
- Confirme que el servicio SQL Server Browser está activo y en ejecución, como se muestra a continuación.
Configurar el firewall para permitir el tráfico de red relacionado con SQL Server
Se deben configurar cuatro excepciones en el Firewall de Windows para permitir el acceso a SQL Server:
- Una excepción de puerto para el Puerto TCP 1433. En el asistente Nueva regla de entrada, utilice la siguiente información para crear una excepción de puerto:
- Seleccione Puerto.
- Seleccione TCP y especifique el puerto 1433.
- Permitir la conexión.
- Elija los tres perfiles (Dominio, Privado y Público).
- Nombre la regla SQL – TCP 1433.
- Una excepción de puerto para el Puerto UDP 1434. Haga clic en Nueva regla nuevamente y utilice la siguiente información para crear otra excepción de puerto:
- Seleccione Puerto.
- Seleccione UDP y especifique el puerto 1434.
- Permitir la conexión.
- Elija los tres perfiles (Dominio, Privado y Público).
- Nombre la regla SQL – UDP 1434.
- Una excepción de programa para sqlservr.exe. Haga clic en Nueva regla nuevamente y utilice la siguiente información para crear una excepción de programa:
- Seleccione Programa.
- Haga clic en Examinar y seleccione sqlservr.exe en la siguiente ubicación: C:\Program Files\Microsoft SQL Server\MSSQL11.[INSTANCE_NAME]\MSSQL\Binn\sqlservr.exe donde [INSTANCE_NAME] es el nombre de su instancia de SQL.
- Permitir la conexión.
- Elija los tres perfiles (Dominio, Privado y Público).
- Nombre la regla SQL – sqlservr.exe.
- Una excepción de programa para sqlbrowser.exe. Haga clic en Nueva regla nuevamente y utilice la siguiente información para crear otra excepción de programa:
- Seleccione Programa.
- Haga clic en Examinar para seleccionar sqlbrowser.exe en esta ubicación: C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe.
- Permitir la conexión.
- Elija los tres perfiles (Dominio, Privado y Público).
- Nombre la regla SQL – sqlbrowser.exe.
Como puede ver, puede ser necesario realizar varias configuraciones para que las conexiones remotas funcionen usando el nombre de la instancia de SQL Server (además de que esto representa un riesgo de seguridad). Por eso se recomienda usar la dirección IP y el puerto.