Interoperabilidade de recursos com FCI e DNN do SQL Server

Aplica-se a: SQL Server na VM do Azure

Dica

Há vários métodos de implantação de um grupo de disponibilidade. Simplifique sua implantação sem precisar usar o Azure Load Balancer ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas VMs (máquinas virtuais) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já tiver criado seu grupo de disponibilidade em uma única sub-rede, poderá migrá-lo para um ambiente de várias sub-redes.

Determinados recursos do SQL Server dependem de um VNN (nome de rede virtual) embutido em código. Assim, ao usar o recurso DNN (nome de rede distribuída) com sua instância de cluster de failover e o SQL Server em VMs do Azure, leve em conta algumas considerações adicionais.

Neste artigo, saiba como configurar o alias de rede ao usar o recurso DNN, e também quais recursos do SQL Server exigem consideração adicional.

Criar alias de rede (FCI)

Alguns componentes do lado do servidor dependem de um valor de VNN embutido em código e, para funcionar corretamente, exigem um alias de rede que mapeie o VNN para o nome DNS DNN. Siga as etapas descritas em Criar um alias de servidor para criar um alias que mapeie o VNN para o nome DNS DNN.

Para uma instância padrão, você pode mapear o VNN para o nome DNS DNN diretamente, de modo que VNN = nome DNS DNN. Por exemplo, se o VNN for FCI1, o nome da instância será MSSQLSERVER e o DNN, FCI1DNN (antes, os clientes se conectavam a FCI e agora se conectam a FCI1DNN) e o mapeamento do VNN FCI1 é feito para o DNN FCI1DNN.

Para uma instância nomeada, o mapeamento de alias de rede deve ser feito para a instância completa, de modo que VNN\Instance = DNN\Instance. Por exemplo, se o VNN for FCI1, o nome da instância será instA e o DNN, FCI1DNN (antes, os clientes se conectavam a FCI1\instA e agora se conectam a FCI1DNN\instaA) e o mapeamento do VNN FCI1\instaA é feito para o DNN FCI1DNN\instaA.

Drivers de cliente

No caso de drivers ODBC, OLEDB, ADO.NET, JDBC, PHP e Node.js, os usuários precisam especificar explicitamente o nome DNS DNN como nome do servidor na cadeia de conexão. Para garantir a conectividade rápida em caso de failover, adicione MultiSubnetFailover=True à cadeia de conexão, se a versão do cliente SQL oferecer suporte.

Ferramentas

Os usuários do SQL Server Management Studio, sqlcmd, Azure Data Studio e SQL Server Data Tools precisam especificar explicitamente o nome DNS DNN como nome do servidor na cadeia de conexão.

Grupos de disponibilidade e FCI

Você pode configurar um grupo de disponibilidade Always On usando uma instância de cluster de failover como uma das réplicas. Nessa configuração, a URL do ponto de extremidade de espelhamento para a réplica FCI deve usar o FCI DNN. Da mesma forma, se a FCI for usada como réplica somente leitura, o roteamento somente leitura para a réplica FCI precisará usar o DNN FCI.

O formato para o ponto de extremidade de espelhamento é: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Por exemplo, se o nome DNS DNN for dnnlsnr e 5022 for a porta do ponto de extremidade de espelhamento da FCI, o trecho de código Transact-SQL (T-SQL) para criação da URL do ponto de extremidade será semelhante a:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Da mesma forma, o formato da URL de roteamento somente leitura é: TCP://<DNN DNS name>:<SQL Server instance port>.

Por exemplo, se o nome DNS do DNN for dnnlsnr e 1444 for a porta usada pelo destino somente leitura da FCI do SQL Server, o trecho de código T-SQL para criação da URL de roteamento somente leitura terá esta aparência:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Você pode omitir a porta na URL,no caso da porta padrão 1433. No caso de uma instância nomeada, configure para ela uma porta estática e especifique-a na URL de roteamento somente leitura.

Replicação

A replicação tem três componentes: Publicador, Distribuidor e Assinante. Qualquer um desses componentes pode ser uma instância de cluster de failover. Como o VNN FCI é muito usado em configurações de replicação, de forma explícita e implícita, pode ser necessário um alias de rede que mapeie o VNN para o DNN, para que essa replicação funcione.

Continue usando o VNN como nome da FCI na replicação, mas crie um alias de rede nas seguintes situações remotas antes de configurar a replicação:

Componente de replicação (FCI com DNN) Componente remoto Mapa de alias de rede Servidor com mapa de rede
Publicador Distribuidor VNN do Publicador para DNN do Publicador Distribuidor
Distribuidor Subscriber VNN do Distribuidor para DNN do Distribuidor Subscriber
Distribuidor Publicador VNN do Distribuidor para DNN do Distribuidor Publicador
Subscriber Distribuidor Assinante VNN para Assinante DNN Distribuidor

Por exemplo, suponha que você tenha um Publicador configurado como FCI usando DNN em uma topologia de replicação e o Distribuidor seja do tipo remoto. Nesse caso, crie um alias de rede no servidor do Distribuidor para mapear o VNN do Publicador para o DNN do Publicador:

Configure o nome DNS DNN como o alias de rede usando o SQL Server Configuration Manager.

Use o nome completo da instância para uma instância nomeada, como o exemplo da imagem a seguir:

Use o nome completo da instância ao configurar um alias de rede para uma instância nomeada.

Espelhamento de banco de dados

Você pode configurar o espelhamento de banco de dados com uma FCI como parceira de espelhamento de banco de dados. Configure-o usando T-SQL (Transact-SQL) em vez da GUI SQL Server Management Studio. O uso de T-SQL garantirá que o ponto de extremidade de espelhamento de banco de dados seja criado com o uso de DNN em vez de VNN.

Por exemplo, se o nome DNS DNN for dnnlsnr e o ponto de extremidade de espelhamento do banco de dados for 7022, o trecho de código T-SQL seguinte configurará o parceiro de espelhamento do banco de dados:

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

Para acesso de cliente, a propriedade de Parceiro de Failover pode manipular o failover de espelhamento de banco de dados, mas não o failover de FCI.

MSDTC

A FCI pode participar de transações distribuídas coordenadas pelo MSDTC (Coordenador de Transações Distribuídas da Microsoft). O MSDTC em cluster e o MSDTC local têm suporte com a FCI do DNN. No Azure, um Azure Load Balancer é necessário para uma implantação do MSDTC em cluster.

Dica

O DNN definido na FCI não substitui o requisito do Azure Load Balancer para o MSDTC em cluster.

FileStream

Embora o FileStream tenha suporte para um banco de dados em uma FCI, não há suporte para o acesso a FileStream ou FileTable com o uso de APIs de Sistema de Arquivos com DNN.

Servidores vinculados

Há suporte para o uso de um servidor vinculado com FCI DNN. Use o DNN diretamente para configurar um servidor vinculado, ou um alias de rede para mapear o VNN para o DNN.

Por exemplo, para criar um servidor vinculado com o nome DNS DNN dnnlsnr para a instância nomeada insta1, use este comando Transact-SQL (T-SQL):

USE [master]   
GO   

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

Como alternativa, você pode criar o servidor vinculado usando a VNN (nome da rede virtual), mas será necessário definir um alias de rede para mapear o VNN para o DNN.

Por exemplo, para nome de instância insta1, nome VNN vnnname e nome DNN dnnlsnr, use o seguinte comando T-SQL (Transact-SQL) para criar um servidor vinculado usando o VNN:

USE [master]
GO   

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

Em seguida, crie um alias de rede para mapear vnnname\insta1 para dnnlsnr\insta1.

Perguntas frequentes

  • Qual versão do SQL Server oferece suporte a DNN?

    SQL Server 2019 CU2 e posteriores.

  • Qual é o tempo de failover esperado quando se usa DNN?

    Para DNN, o tempo de failover será exatamente o mesmo da FCI, sem nenhuma adição (como o tempo de investigação quando você estiver usando Azure Load Balancer).

  • Há algum requisito de versão para que clientes SQL ofereçam suporte a DNN com OLEDB e ODBC?

    Recomendamos o suporte de cadeia de conexão para DNN MultiSubnetFailover=True. Ele está disponível a partir do SQL Server 2012 (11.x).

  • Há alterações de configuração do SQL Server obrigatórias para usar DNN?

    O SQL Server não requer alterações de configuração para usar DNN, mas alguns recursos do SQL Server podem exigir maior consideração.

  • O DNN oferece suporte a clusters de várias sub-redes?

    Sim. O cluster associa o DNN no DNS aos endereços IP físicos de todos os nós no cluster, qualquer que seja a sub-rede. O cliente SQL experimenta todos os endereços IP do nome DNS, qualquer que seja a sub-rede.

Próximas etapas

Para obter mais informações, consulte: