Partilhar via


Interoperabilidade de funções com o SQL Server FCI e DNN

Aplica-se a:SQL Server em VM do Azure

Sugestão

Há muitos métodos para configurar 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, poderá 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). Assim, ao usar o recurso Distributed Network Name (DNN) com a sua instância de cluster de failover e SQL Server em máquinas virtuais na Azure, há algumas considerações.

Neste artigo, saiba como configurar o alias de rede ao utilizar o recurso DNN e quais as funcionalidades do SQL Server que requerem consideração adicional.

Criar alias de rede (FCI)

Alguns componentes do lado do servidor dependem de um valor VNN codificado diretamente e requerem um alias de rede que mapeie a VNN ao nome DNS da DNN para funcionar corretamente.

Siga os passos em Criar ou eliminar um alias de servidor para uso por um cliente para criar um alias que mapeie a VNN para o nome DNS DNN.

Para uma instância predefinida, pode mapear o VNN diretamente para o nome DNS DNN, de forma que VNN = nome DNS DNN.

  • Por exemplo, se o nome do VNN for FCI1, o nome da instância for MSSQLSERVER, e o DNN for FCI1DNN (clientes anteriormente ligados a FCI, e agora ligam-se a FCI1DNN), então mapeiem o VNN FCI1 para o DNN FCI1DNN.

Para uma instância nomeada, o mapeamento de alias de rede deve ser feito para a instância completa, tal que VNN\Instance = DNN\Instance.

  • Por exemplo, se o nome do VNN for FCI1, o nome da instância for instA, e o DNN for FCI1DNN (clientes anteriormente ligados a FCI1\instA, e agora ligam-se a FCI1DNN\instaA), então mapeiem o VNN FCI1\instaA para o DNN FCI1DNN\instaA.

Drivers de cliente

Para os drivers ODBC, OLEDB, ADO.NET, JDBC, PHP e Node.js, os utilizadores precisam de especificar claramente o nome DNS DNN como o nome do servidor na cadeia de ligaçã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.

Tools

Os utilizadores do SQL Server Management Studio, sqlcmd, a extensão MSSQL para Visual Studio Code, e SQL Server Data Tools precisam de especificar explicitamente o nome DNS DNN como nome do servidor na string de conexão.

Grupos de disponibilidade e FCI

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 utilizada como uma réplica apenas para leitura, o encaminhamento de leitura para a réplica FCI deverá usar o 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 do seu DNN for dnnlsnr e 5022 representar a porta do endpoint de espelhamento da FCI, o seguinte excerto de código Transact-SQL (T-SQL) demonstra como criar a URL do endpoint:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

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

Por exemplo, se o nome DNS DNN for dnnlsnr, e 1444 for a 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'

Podes omitir a porta na URL se for a porta padrão 1433. Para uma instância nomeada, configure uma porta estática para essa instância e especifique-a na URL de rota de leitura apenas.

Replication

A replicação tem três componentes: Editor, Distribuidor, Assinante. Qualquer um destes componentes pode ser uma instância de cluster de failover. Como a VNN FCI é muito utilizada em configurações de replicação, tanto explícita como implicitamente, pode ser necessário um alias de rede que mapeie a VNN para a DNN para que a replicação funcione.

Continue a usar o nome VNN como 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
Editora Distributor Editora VNN para Editora DNN Distributor
Distributor Subscriber Distribuidor VNN para Distribuidor DNN Subscriber
Distributor Editora Distribuidor VNN para o Distribuidor DNN Editora
Subscriber Distributor VNN para DNN de assinante Distributor

Por exemplo, suponha que tem um Publisher configurado como uma FCI usando DNN numa topologia de replicação, e que o Distribuidor é remoto. Neste caso, crie um alias de rede no servidor Distribuidor para mapear o VNN do Publisher para o DNN do Publisher:

Captura de ecrã da configuração do nome DNS DNN como alias de rede usando o SQL Server Configuration Manager.

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

Captura de ecrã mostrando o nome completo da instância ao configurar um alias de rede para uma instância nomeada.

Espelhamento de banco de dados

Pode configurar o espelhamento de bases de dados com uma FCI como um dos parceiros de espelhamento. Configure-o usando Transact-SQL (T-SQL) em vez da interface gráfica do SQL Server Management Studio. Usar T-SQL garante que o endpoint de espelhamento da base de dados é criado usando a DNN em vez da VNN.

Por exemplo, se o seu nome DNS DNN for dnnlsnr, e o endpoint de espelhamento da base de dados for 7022, o seguinte excerto de código T-SQL configura o parceiro de espelhamento da base de dados:

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

Para o acesso do cliente, a propriedade Parceiro de Failover pode gerir o failover por espelhamento de base de dados, mas não o failover por FCI.

MSDTC

A FCI pode participar em transações distribuídas coordenadas pelo Microsoft Distributed Transaction Coordinator (MSDTC). O MSDTC em cluster e o MSDTC local são suportados com FCI DNN. No Azure, um Azure Load Balancer é necessário para uma implementação MSDTC em cluster.

Sugestão

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

FILESTREAM

Embora o FILESTREAM seja suportado para uma base de dados numa FCI, não é suportado aceder ao FILESTREAM ou ao FileTable usando APIs do Sistema de Ficheiros com DNN.

Servidores vinculados

É suportado o uso de um servidor ligado com um DNN FCI. Ou usa o DNN diretamente para configurar um servidor ligado, ou usa um alias de rede para mapear a VNN para a DNN.

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

USE master;
GO

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

Alternativamente, pode criar o servidor ligado usando o nome da rede virtual (VNN), mas depois precisa de definir um alias de rede para mapear o VNN ao DNN.

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

USE master;
GO

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

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

Perguntas frequentes

Qual versão do SQL Server traz suporte para DNN?

SQL Server 2019 CU2 e versões posteriores.

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

Para DNN, o tempo de failover é apenas o tempo de failover da FCI, sem qualquer tempo adicionado (como o tempo de sonda quando se usa o Azure Load Balancer).

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

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

É necessária alguma alteração na configuração do SQL Server para eu usar 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?

Yes. O cluster associa o DNN no DNS aos endereços IP físicos de todos os nós do cluster, independentemente das sub-redes. O cliente SQL tenta todos os endereços IP do nome DNS, independentemente da sub-rede.