Interoperabilidade de recursos com o SQL Server FCI & DNN

Aplica-se a:SQL Server na VM do Azure

Gorjeta

Há muitos métodos para implantar um grupo de disponibilidade. Simplifique sua implantação e elimine a necessidade de um Balanceador de Carga do Azure ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas máquinas virtuais (VMs) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já criou seu grupo de disponibilidade em uma única sub-rede, pode migrá-lo para um ambiente de várias sub-redes.

Há certos recursos do SQL Server que dependem de um nome de rede virtual codificado (VNN). Como tal, 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, há algumas considerações adicionais.

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

Criar alias de rede (FCI)

Alguns componentes do lado do servidor dependem de um valor VNN codificado e exigem um alias de rede que mapeie a VNN para o nome DNS DNN para funcionar corretamente. Siga as etapas em Criar um alias de servidor para criar um alias que mapeie a VNN para o nome DNS DNN.

Para uma instância padrão, você pode mapear a VNN para o nome DNS DNN diretamente, de modo que VNN = DNN DNS name. Por exemplo, se o nome da VNN for , o nome da instância for , e a DNN for FCI1MSSQLSERVERFCI1DNN (os clientes anteriormente conectados à FCI, e agora eles se conectam a ), mapeie a VNN FCI1 para a FCI1DNNDNN.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 nome da VNN for , o nome da instância for , e a DNN for FCI1instAFCI1DNN (os clientes anteriormente conectados à FCI1\instA, e agora eles se conectam a ), mapeie a VNN FCI1\instaA para a FCI1DNN\instaADNN.FCI1DNN\instaA

Controladores do cliente

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

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 o 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 da FCI precisa usar a DNN da FCI. Da mesma forma, se a FCI for usada como uma réplica somente leitura, o roteamento somente leitura para a réplica FCI precisará usar a DNN da FCI.

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

Por exemplo, se o nome DNS DNN for , e 5022 for dnnlsnra porta do ponto de extremidade de espelhamento da FCI, o trecho de código Transact-SQL (T-SQL) para criar a URL do ponto de extremidade terá a seguinte aparência:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

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

Por exemplo, se o nome DNS DNN for , e 1444 for dnnlsnra porta usada pela FCI do SQL Server de destino somente leitura, o trecho de código T-SQL para criar a URL de roteamento somente leitura terá a seguinte aparência:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Você pode omitir a porta na URL se ela for a porta 1433 padrão. Para uma instância nomeada, configure uma porta estática para a instância nomeada 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 a VNN FCI é muito usada na configuração de replicação, explícita e implicitamente, um alias de rede que mapeie a VNN para a DNN pode ser necessário para que a replicação funcione.

Continue usando o nome VNN como o nome 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
Publisher Distribuidor Publisher VNN para DNN do Publisher Distribuidor
Distribuidor Subscritor Distribuidor VNN para Distribuidor DNN Subscritor
Distribuidor Publisher Distribuidor VNN para Distribuidor DNN Publisher
Subscritor Distribuidor VNN do Assinante para DNN do Assinante Distribuidor

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

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

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

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

Espelhamento da base de dados

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

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

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

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

MSDTC

A FCI pode participar de transações distribuídas coordenadas pelo Microsoft Distributed Transaction Coordinator (MSDTC). MSDTC clusterizado e MSDTC local são suportados com DNN FCI. No Azure, um Balanceador de Carga do Azure é necessário para uma implantação MSDTC clusterizada.

Gorjeta

A DNN definida na FCI não substitui o requisito do Balanceador de Carga do Azure para o MSDTC clusterizado.

FileStream

Embora FileStream seja suportado para um banco de dados em uma FCI, o acesso a FileStream ou FileTable usando APIs de sistema de arquivos com DNN não é suportado.

Servidores ligados

O uso de um servidor vinculado com uma DNN FCI é suportado. Use a DNN diretamente para configurar um servidor vinculado ou use um alias de rede para mapear a VNN para a DNN.

Por exemplo, para criar um servidor vinculado com nome dnnlsnr DNS DNN para instância insta1nomeada, use o seguinte 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 o nome da rede virtual (VNN), mas precisará definir um alias de rede para mapear a VNN para a DNN.

Por exemplo, por exemplo, name , VNN name vnnnamee DNN name insta1dnnlsnr, use o seguinte comando Transact-SQL (T-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 mais frequentes

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

    SQL Server 2019 CU2 e posterior.

  • Qual é o tempo de failover esperado quando a DNN é usada?

    Para DNN, o tempo de failover será apenas o tempo de failover de FCI, sem qualquer tempo adicionado (como o tempo de teste quando você estiver usando o Balanceador de Carga do Azure).

  • Existe algum requisito de versão para clientes SQL para suportar DNN com OLEDB e ODBC?

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

  • São necessárias alterações na configuração do SQL Server para que eu possa usar a DNN?

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

  • A DNN suporta clusters de várias sub-redes?

    Sim. O cluster vincula a DNN no DNS com os endereços IP físicos de todos os nós no cluster, independentemente da sub-rede. O cliente SQL tenta todos os endereços IP do nome DNS, independentemente da sub-rede.

Próximos passos

Para saber mais, veja: