ERROR: No se puede conectar a una instancia con nombre agrupada a través de un firewall

Nº DE ERROR: 356696 (SHILOH_BUGS)

Síntomas

Si intenta conectarse a una instancia con nombre agrupada de SQL Server a través de un firewall y utilice el nombre de instancia (por ejemplo, SQL_Virtual_Name\Instance_Name) en la cadena de conexión, la conexión falla y puede recibir uno de los siguientes mensajes de error:

Mensaje de error 1
No se encontró el servidor SQL especificado.
Mensaje de error 2
SQL Server no existe o acceso denegado.
Si ejecuta una traza de red en el servidor, puede ver que el servidor recibe realmente la consulta desde el equipo cliente en el puerto UDP 1434 para la dirección IP del servidor virtual; Sin embargo, la respuesta se envía con la dirección IP física del nodo que se está ejecutando SQL Server.

Causa

Cuando un equipo cliente se conecta a un equipo que está ejecutando una instancia agrupada de SQL Server, si la cadena de conexión no especifica el puerto TCP de destino, la biblioteca cliente consulta el servidor en el puerto UDP 1434 para recopilar información acerca de la instancia.


Cuando el servidor devuelve la información, el marco de la red contiene la dirección IP del nodo físico en lugar de la dirección IP del servidor virtual. Dependiendo de la configuración del firewall, puede que se pierda este paquete de red y el cliente no puede recibir ninguna respuesta.

Solución alternativa

Para evitar este comportamiento, puede:

  • Especificar el número de puerto TCP en la cadena de conexión. Por ejemplo, si el servidor virtual de SQL Server se denomina VSERVER1 y está escuchando en el puerto TCP 2433, la cadena de conexión contendrá los siguientes atributos.
    Data Source=VSERVER1\instancename,2433;Network Library=dbmssocn
    - o -

  • Crear un alias de SQL Server en cada cliente utilizando la herramienta de red de cliente. En el alias, especifique la biblioteca de red en uso (TCP/IP) y el número de puerto. Utilice este alias en la cadena de conexión y no especifica el atributo de biblioteca de red en la cadena de conexión.

    También puede automatizar la creación de alias de SQL Server en cada cliente mediante el uso de un objeto de directiva de grupo (GPO) del controlador de dominio. Suponga que su instancia virtual de SQL Server se denomina VSERVER1\MyInstance. La instancia virtual de SQL Server está escuchando en el puerto TCP 2433. El nombre del alias de SQL Server que desea crear es MyAlias. Para automatizar la creación de alias de SQL Server, siga estos pasos:
    1. En el controlador de dominio, cree un archivo .reg que contiene la entrada del registro para el alias de SQL Server.

      Por ejemplo, cree un archivo Myreg.reg que contiene la siguiente información.
      Windows Registry Editor Version 5.00
      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
      "DSQUERY"="DBNETLIB"
      "MyAlias"="DBMSSOCN,VSERVER1\MyInstance,2433"
    2. Para crear una unidad organizativa (OU), siga estos pasos:
      1. Abra usuarios y equipos de Active Directory Users, haga clic derecho en el nombre del dominio, seleccione nuevoy, a continuación, haga clic en Unidad organizativa.
      2. En el cuadro de diálogo Nuevo objeto - unidad organizativa , escriba un nombre para la unidad Organizativa y, a continuación, haga clic en Aceptar.
    3. Agregar los usuarios y los equipos a los que desea aplicar el GPO a la unidad Organizativa. Para ello, arrastre los usuarios y los equipos a la unidad Organizativa que creó en el paso 2.
    4. Agregue un GPO a la unidad Organizativa. Este GPO aplica una secuencia de comandos de inicio de sesión de usuario o un script de inicio del equipo para importar el archivo. reg. Para ello, siga estos pasos:
      1. Haga clic en la unidad Organizativa que creó en el paso 2 y, a continuación, haga clic en Propiedades.
      2. En el cuadro de diálogo Propiedades , haga clic en la ficha Directiva de grupo .
      3. En la ficha Directiva de grupo , haga clic en nuevoy, a continuación, haga clic en Editar para abrir la ventana del Editor de objetos de directiva de grupo .
      4. Si desea aplicar este GPO a los usuarios o grupos, siga este paso:
        • Expanda Configuración de usuario, expanda Configuración de Windows, haga clic en secuencias de comandos (inicio/cierre de sesión)y, a continuación, haga doble clic en Inicio de sesión.
        Si desea aplicar este GPO a los equipos, siga este paso:
        • Expanda Configuración del equipo, expanda Configuración de Windows, haga clic en secuencias de comandos (inicio/apagado)y, a continuación, haga doble clic en Inicio.
      5. En el cuadro de diálogo Propiedades , haga clic en Mostrar archivos para abrir la carpeta que contiene los archivos de comandos.

        Nota: Una ruta de acceso de convención de nomenclatura universal (UNC, Universal Naming Convention) aparece en la barra de direcciones de la ventana de carpeta.
      6. Coloque el archivo Myreg.reg en la carpeta que abrió en el paso 4e.
      7. En la misma carpeta, cree un archivo .bat que contiene la siguiente información. Se supone que el nombre de archivo es Mybat.bat.
        Regedit /s <Path>\Myreg.reg
        Notas:
        • < ruta > representa la ruta de acceso UNC de la carpeta.
        • Se especifica el modificador /s para importar el archivo .reg en modo silencioso.
      8. En el cuadro de diálogo Propiedades , haga clic en Agregar.
      9. En el cuadro de diálogo Agregar una secuencia de comandos , haga clic en Examinar.
      10. En el cuadro de diálogo Examinar , busque el archivo Mybat.bat y, a continuación, haga clic en Abrir.
      11. En el cuadro de diálogo Agregar una secuencia de comandos , haga clic en Aceptar.
      12. En el cuadro de diálogo Propiedades , haga clic en Aceptar.
    5. Asegúrese de que los usuarios y los equipos que agregó en el paso 3 tienen el permiso leer y el permiso Aplicar directiva de grupos para el GPO. Para ello, siga estos pasos:
      1. En Active Directory Users and Computers, haga clic en la unidad Organizativa que creó en el paso 2 y, a continuación, haga clic en Propiedades.
      2. En el cuadro de diálogo Propiedades , haga clic en la ficha Directiva de grupo .
      3. En la ficha Directiva de grupo , haga clic en el GPO que creó en el paso 4c y, a continuación, haga clic en Propiedades.
      4. En el cuadro de diálogo Propiedades , haga clic en la ficha seguridad .
      5. En la ficha seguridad , asegúrese de que los usuarios y los equipos a los que se aplica el GPO aparecen bajo nombres de grupos o usuarios.
      6. Asegúrese de que se especifican los permisos leer y el permiso Aplicar directiva de grupo para los usuarios y los equipos.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Este problema se corrige en los siguientes casos:
  • Microsoft SQL Server 2008 instalado en Windows Server 2008
  • Microsoft SQL Server 2005 que coexiste junto con Microsoft SQL Server 2008 en Windows Server 2008
Este problema se produce en Microsoft SQL Server 2008 en Windows Server 2003.

Más información

Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

CORREGIR 944390 : mensaje de Error cuando se conecta a una instancia con nombre de SQL Server en un equipo cliente que ejecuta Windows Vista o Windows Server 2008: "Especificado no se encontró el servidor SQL" o "Error Buscar servidor/instancia especificado"

936302 lista de problemas conocidos al instalar SQL Server 2005 en Windows Server 2008

Propiedades

Id. de artículo: 318432 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios