Interoperabilidad de características con FCI y DNN de SQL Server

Se aplica a:SQL Server en VM de Azure

Sugerencia

Hay muchos métodos para implementar un grupo de disponibilidad. Simplifique la implementación y elimine la necesidad de un nombre de red distribuida (DNN) o un equilibrador de carga de Azure para el grupo de disponibilidad Always On mediante la creación de las máquinas virtuales (VM) de SQL Server en varias subredes dentro de la misma red virtual de Azure. Si ya ha creado el grupo de disponibilidad en una sola subred, puede migrarlo a un entorno de varias subredes.

Existen determinadas características de SQL Server que dependen de un nombre de red virtual (VNN) codificado de forma rígida. Por lo tanto, al utilizar el recurso de nombre de red distribuida (DNN) con la instancia de clúster de conmutación por error y SQL Server en máquinas virtuales de Azure, se requieren algunas atenciones adicionales.

En este artículo aprenderá a configurar el alias de red cuando utilice el recurso DNN, así como qué características de SQL Server requieren que se le preste una atención adicional.

Creación de alias de red (FCI)

Algunos componentes del lado servidor dependen de un valor de VNN codificado de forma rígida y requieren un alias de red que asigne el VNN al nombre DNS de DNN para que funcione correctamente. Siga los pasos descritos para la creación de un alias de servidor y cree un alias que asigne el VNN al nombre DNS de DNN.

En el caso de una instancia predeterminada, puede asignar el VNN al nombre DNS de DNN directamente, de modo que VNN = nombre DNS de DNN. Por ejemplo, si el nombre VNN es FCI1, el nombre de instancia es MSSQLSERVER y el DNN es FCI1DNN (clientes que se han conectado previamente a FCI y ahora se conectan a FCI1DNN), asigne el VNN FCI1 al DNN FCI1DNN.

En el caso de una instancia con nombre, se debe realizar la asignación de alias de red para la instancia completa, como VNN\Instance = DNN\Instance. Por ejemplo, si el nombre VNN es FCI1, el nombre de instancia es instA y el DNN es FCI1DNN (clientes que se han conectado previamente a FCI1\instA y ahora se conectan a FCI1DNN\instaA), asigne el VNN FCI1\instaA al DNN FCI1DNN\instaA.

Controladores cliente

Para los controladores ODBC, OLEDB, ADO.NET, JDBC, PHP y node.js, los usuarios deben especificar explícitamente el nombre DNS de DNN como nombre de servidor en la cadena de conexión. Para garantizar una conectividad rápida tras la conmutación por error, agregue MultiSubnetFailover=True a la cadena de conexión si el cliente SQL lo admite.

Herramientas

Los usuarios de SQL Server Management Studio, sqlcmd, Azure Data Studio y SQL Server Data Tools deben especificar explícitamente el nombre DNS de DNN como nombre de servidor en la cadena de conexión.

Grupos de disponibilidad y FCI

Puede configurar un grupo de disponibilidad Always On mediante una instancia de clúster de conmutación por error como una de las réplicas. En esta configuración, la dirección URL del punto de conexión de creación de reflejo para la réplica de FCI debe utilizar el DNN de la FCI. Del mismo modo, si la FCI se usa como réplica de solo lectura, el enrutamiento de solo lectura a la réplica de FCI debe utilizar el DNN de la FCI.

El formato del punto de conexión de creación de reflejo es: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Por ejemplo, si el nombre DNS de DNN es dnnlsnr y 5022 es el puerto del punto de conexión de creación de reflejo de la FCI, el fragmento de código de Transact-SQL (T-SQL) para crear la dirección URL del punto de conexión tiene el siguiente aspecto:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Del mismo modo, el formato de la dirección URL de enrutamiento de solo lectura es: TCP://<DNN DNS name>:<SQL Server instance port>.

Por ejemplo, si el nombre DNS del DNN es dnnlsnr y 1444 es el puerto que usa la FCI de SQL Server de destino de solo lectura, el fragmento de código de T-SQL para crear la dirección URL de enrutamiento de solo lectura tiene el siguiente aspecto:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Puede omitir el puerto en la dirección URL si es el puerto predeterminado 1433. Para una instancia con nombre, configure un puerto estático para la instancia con nombre y especifíquelo en la dirección URL de enrutamiento de solo lectura.

Replicación

La replicación tiene tres componentes: editor, distribuidor, suscriptor. Cualquiera de estos componentes puede ser una instancia de clúster de conmutación por error. Dado que el VNN de la FCI se utiliza mucho en la configuración de la replicación, tanto de forma explícita como implícita, es posible que sea necesario un alias de red que asigne el VNN al DNN para que la replicación funcione.

Siga utilizando el nombre VNN como nombre de la FCI dentro de la replicación, pero cree un alias de red en las siguientes situaciones remotas antes de configurar la replicación:

Componente de replicación (FCI con DNN) Componente remoto Asignación de alias de red Servidor con asignación de red
Publicador Distribuidor. VNN del editor para el DNN del editor Distribuidor.
Distribuidor. Suscriptor VNN del distribuidor para el DNN del distribuidor Suscriptor
Distribuidor. Publicador VNN del distribuidor para el DNN del distribuidor Publicador
Suscriptor Distribuidor. VNN del suscriptor para el DNN del suscriptor Distribuidor.

Por ejemplo, suponga que tiene un editor que esté configurado como una FCI mediante el DNN en una topología de replicación y el distribuidor es remoto. En este caso, cree un alias de red en el servidor de distribuidor para asignar el VNN del editor al DNN del editor:

Configure the DNN DNS name as the network alias using SQL Server Configuration Manager.

Utilice el nombre de instancia completo para una instancia con nombre, como en el ejemplo de imagen siguiente:

Use the full instance name when configuring a network alias for a named instance.

Creación de reflejo de la base de datos

Puede configurar la creación de reflejo de la base de datos con una FCI como asociado de creación de reflejo de la base de datos. Configúrela mediante Transact-SQL (T-SQL) en lugar de la interfaz gráfica de usuario de SQL Server Management Studio. El uso de T-SQL garantizará que el punto de conexión de creación de reflejo de la base de datos se cree con DNN en lugar de VNN.

Por ejemplo, si el nombre DNS de DNN es dnnlsnr y el punto de conexión de creación de reflejo de la base de datos es 7022, el siguiente fragmento de código de T-SQL configura el asociado de creación de reflejo de la base de datos:

ALTER DATABASE AdventureWorks
    SET PARTNER =
    'TCP://dnnlsnr:7022'
GO 

Para el acceso de cliente, la propiedad Socio de conmutación por error puede administrar la conmutación por error de la creación de reflejo de la base de datos, pero no la conmutación por error de la FCI.

MSDTC

La FCI puede participar en transacciones distribuidas coordinadas mediante el Coordinador de transacciones distribuidas de Microsoft (MSDTC). MSDTC agrupado y MSDTC local son compatibles con FCI DNN. En Azure, se necesita una instancia de Azure Load Balancer para un MSDTC agrupado.

Sugerencia

El DNN definido en la FCI no reemplaza el requisito de Azure Load Balancer del MSDTC agrupado.

Secuencia de archivos

Aunque FileStream es compatible con una base de datos de una FCI, no se admite el acceso a FileStream o a FileTable mediante las API del sistema de archivos con DNN.

Servidores vinculados

Se admite el uso de un servidor vinculado con un DNN de FCI. Use el DNN directamente para configurar un servidor vinculado o un alias de red para asignar el VNN al DNN.

Por ejemplo, para crear un servidor vinculado con el nombre DNS del DNN dnnlsnr para la instancia con nombre insta1, utilice el siguiente comando de Transact-SQL (T-SQL):

USE [master]   
GO   

EXEC master.dbo.sp_addlinkedserver    
    @server = N'dnnlsnr\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

Como alternativa, puede crear el servidor vinculado con el nombre de red virtual (VNN) en su lugar, pero tendrá que definir un alias de red para asignar el VNN al DNN.

Por ejemplo, para el nombre de instancia insta1, el nombre VNN vnnname y el nombre DNN dnnlsnr, utilice el siguiente comando de Transact-SQL (T-SQL) para crear un servidor vinculado mediante el VNN:

USE [master]
GO   

EXEC master.dbo.sp_addlinkedserver   
    @server = N'vnnname\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

A continuación, cree un alias de red para asignar vnnname\insta1 a dnnlsnr\insta1.

Preguntas más frecuentes

  • ¿Qué versión de SQL Server proporciona compatibilidad con el DNN?

    SQL Server 2019 CU2 y versiones posteriores.

  • ¿Cuál es el tiempo de conmutación por error esperado cuando se utiliza el DNN?

    En el caso del DNN, el tiempo de conmutación por error será solo el tiempo de conmutación por error de la FCI, sin más tiempo adicional (como el tiempo de sondeo cuando se utiliza Azure Load Balancer).

  • ¿Hay algún requisito de versión para que los clientes de SQL admitan DNN con OLEDB y ODBC?

    Se recomienda compatibilidad con la cadena de conexión MultiSubnetFailover=True para el DNN. Está disponible a partir de SQL Server 2012 (11.x).

  • ¿Hay algún cambio de configuración de SQL Server que necesite para utilizar el DNN?

    SQL Server no requiere ningún cambio en la configuración para utilizar el DNN, pero es posible que algunas características de SQL Server requieran más atención.

  • ¿Admite el DNN clústeres de varias subredes?

    Sí. El clúster enlaza el DNN en DNS con las direcciones IP físicas de todos los nodos del clúster, independientemente de la subred. El cliente SQL prueba todas las direcciones IP del nombre DNS independientemente de la subred.

Pasos siguientes

Para obtener más información, consulte: