Compartilhar via


Preparar o ambiente para uma migração de link da Instância Gerenciada – migração do SQL Server no Azure Arc

Aplica-se a:SQL Server

Este artigo ajuda você a preparar seu ambiente para uma migração de link da Instância Gerenciada da instância do SQL Server habilitada pelo Azure Arc para a Instância Gerenciada de SQL do Azure no portal do Azure.

Com o link, você pode migrar seus bancos de dados do SQL Server para a Instância Gerenciada de SQL do Azure usando a replicação em tempo real com um grupo de disponibilidade distribuído (migração online):

Diagrama mostrando a migração de link da Instância Gerenciada.

Observação

Você pode fornecer comentários sobre sua experiência de migração diretamente para o grupo de produtos.

Pré-requisitos

Para migrar seus bancos de dados do SQL Server para a Instância Gerenciada de SQL do Azure por meio do portal do Azure, você precisa dos seguintes pré-requisitos:

Versões do SQL Server com suporte

As camadas de serviço de Uso Geral e Comercialmente Crítico da Instância Gerenciada de SQL do Azure dão suporte ao link da Instância Gerenciada. A migração com o recurso de link funciona com as edições Enterprise, Developer e Standard do SQL Server no Windows Server.

A tabela a seguir lista as versões mínimas do SQL Server com suporte para o link:

Versão do SQL Server Atualização mínima de manutenção necessária
SQL Server 2025 (17.x) SQL Server 2025 RTM (17.0.1000.7)
SQL Server 2022 (16.x) SQL Server 2022 RTM (16.0.1000.6)
SQL Server 2019 (15.x) SQL Server 2019 CU20 (15.0.4312.2)
SQL Server 2017 (14.x) SQL Server 2017 CU31 (14.0.3456.2) ou posterior e o build correspondente do pacote de conexão SQL Server 2017 Azure (14.0.3490.10)
SQL Server 2016 (13.x) SQL Server 2016 SP3 (13.0.6300.2) e o build correspondente do SQL Server 2016 Azure Connect (13.0.7000.253)
SQL Server 2014 (12.x) e anterior Não há suporte para versões anteriores ao SQL Server 2016.

A migração reversa só tem suporte para o SQL Server 2025 e o SQL Server 2022 de instâncias gerenciadas de SQL com a política de atualização correspondente. Você pode reverter manualmente uma migração por meio de outras ferramentas, como backup e restauração nativos, ou configurar manualmente um link no SSMS.

Permissions

Esta seção descreve as permissões necessárias para migrar sua instância do SQL Server para a Instância Gerenciada de SQL por meio do portal do Azure.

Na instância do SQL Server de origem, você precisa das seguintes permissões:

  • Se você habilitar privilégios mínimos, as permissões necessárias, como sysadmin , serão concedidas conforme necessário durante o processo de migração de banco de dados.
  • Se você não puder usar privilégios mínimos, a pessoa que executa a migração precisará de permissões sysadmin na instância do SQL Server de origem. Além disso, se você precisar cancelar uma migração, também atribua manualmente permissões de sysadmin à NT AUTHORITY\SYSTEM conta.

Para migrar com o link da Instância Gerenciada, você precisa de uma das seguintes permissões no destino da Instância Gerenciada de SQL:

Para obter permissões mínimas, consulte permissões personalizadas.

Observação

Os usuários com as permissões , e no Azure podem executar ações no painel de migração de banco de dados durante o processo de migração para elevar as permissões do SQL Server da conta usada pela extensão, incluindo o papel .

Prepare sua instância do SQL Server

Para preparar sua instância do SQL Server, conclua as seguintes etapas:

Você precisa reiniciar o SQL Server para que essas alterações entrem em vigor.

Instalar atualizações de serviço

Certifique-se de que sua versão do SQL Server tenha a atualização de serviço apropriada instalada, conforme listado na tabela de compatibilidade de versão. Se precisar instalar atualizações, reinicie a instância do SQL Server durante a atualização.

Para verificar sua versão do SQL Server, execute o seguinte script de Transact-SQL (T-SQL) no SQL Server:

-- Run on SQL Server
-- Shows the version and CU of the SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';

Criar uma chave mestra de banco de dados no banco de dados mestre

O link usa certificados para criptografar a autenticação e a comunicação entre o SQL Server e a Instância Gerenciada de SQL. A chave mestra do banco de dados protege os certificados usados pelo link. Se você já tiver uma chave mestra de banco de dados, ignore esta etapa.

Crie uma chave mestra de banco de dados no master banco de dados. Insira sua senha no lugar de <strong_password> no script a seguir e guarde-a em um lugar confidencial e seguro. Execute este script T-SQL no SQL Server:

-- Run on SQL Server
-- Create a master key
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';

Para certificar-se de que você tem uma chave mestra do banco de dados, use o seguinte script T-SQL no SQL Server:

-- Run on SQL Server
USE master;
GO
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%DatabaseMasterKey%';

Preparar instâncias do SQL Server 2016

Para o SQL Server 2016 (13.x), você deve concluir as etapas extras documentadas em Preparar os pré-requisitos do SQL Server 2016 para o link. Essas etapas extras não são necessárias para o SQL Server 2017 (14.x) e versões posteriores compatíveis com o link.

Habilitar os grupos de disponibilidade

O recurso de link depende do recurso de grupos de disponibilidade Always On, que está desabilitado por padrão. Para obter mais informações, confira Habilitar o recurso de grupos de disponibilidade Always On.

Para confirmar que o recurso de grupos de disponibilidade está habilitado, execute o seguinte script de T-SQL no SQL Server:

-- Run on SQL Server
-- Is the availability groups feature enabled on this SQL Server
DECLARE @IsHadrEnabled sql_variant = (select SERVERPROPERTY('IsHadrEnabled'))
SELECT
    @IsHadrEnabled as 'Is HADR enabled',
    CASE @IsHadrEnabled
        WHEN 0 THEN 'Availability groups DISABLED.'
        WHEN 1 THEN 'Availability groups ENABLED.'
        ELSE 'Unknown status.'
    END
    as 'HADR status'

Se o recurso de grupos de disponibilidade não estiver habilitado, siga estas etapas para habilitá-lo:

  1. Abra o SQL Server Configuration Manager.

  2. Selecione Serviços do SQL Server no painel à esquerda.

  3. Clique com o botão direito do mouse no serviço do SQL Server e selecione Propriedades:

    Captura de tela que mostra o SQL Server Configuration Manager, com seleções para abrir propriedades para o serviço.

  4. Vá para a aba Grupos de Disponibilidade Always On.

  5. Marque a caixa de seleção Habilitar Grupos de Disponibilidade AlwaysOn e selecione OK.

    Captura de tela que mostra as propriedades dos grupos de disponibilidade Always On.

    • Se você estiver usando o SQL Server 2016 (13.x) e a opção Habilitar Grupos de Disponibilidade AlwaysOn estiver desabilitada com a mensagem This computer is not a node in a failover cluster, siga as etapas descritas em Preparar pré-requisitos do SQL Server 2016 para o link. Depois de concluir essas etapas, retorne a esta etapa e tente novamente.
  6. Selecione OK na caixa de diálogo.

  7. Reinicie o serviço SQL Server.

Habilitar sinalizadores de rastreamento na inicialização

Para otimizar o desempenho do link, habilite os seguintes sinalizadores de rastreamento na inicialização:

  • -T1800: esse sinalizador de rastreamento otimiza o desempenho quando os arquivos de log das réplicas primárias e secundárias em um grupo de disponibilidade estão em discos com tamanhos de setor diferentes, como 512 bytes e 4 KB. Se as réplicas primárias e secundárias usarem um tamanho de setor de disco de 4 KB, você não precisará desse sinalizador de rastreamento. Para obter mais informações, consulte KB3009974.
  • -T9567: esse sinalizador de rastreamento habilita a compactação do fluxo de dados para grupos de disponibilidade durante a propagação automática. A compactação aumenta a carga no processador, mas pode reduzir consideravelmente o tempo de transferência durante a propagação.

Para habilitar esses sinalizadores de rastreamento na inicialização, use as etapas a seguir:

  1. Abra o SQL Server Configuration Manager.

  2. Selecione Serviços do SQL Server no painel à esquerda.

  3. Clique com o botão direito do mouse no serviço do SQL Server e selecione Propriedades.

    Captura de tela mostrando o SQL Server Configuration Manager.

  4. Vá para a guia Parâmetros de inicialização. Em Especificar um parâmetro de inicialização, insira -T1800 e selecione Adicionar para adicionar o parâmetro de inicialização. Em seguida, insira -T9567 e selecione adicionar para adicionar o outro sinalizador de rastreamento. Selecione Aplicar para salvar as alterações.

    Captura de tela mostrando as propriedades do parâmetro de inicialização.

  5. Clique em OK para fechar a janela Propriedades.

Para obter mais informações, consulte a sintaxe para habilitar os sinalizadores de rastreamento.

Reiniciar o SQL Server e validar a configuração

Se você não precisar atualizar a versão do SQL Server, habilitar o recurso do grupo de disponibilidade ou adicionar sinalizadores de rastreamento de inicialização, ignore esta seção.

Depois de garantir que você está em uma versão com suporte do SQL Server, habilite o recurso grupos de disponibilidade Always On e adicione os sinalizadores de rastreamento de inicialização, reinicie a instância do SQL Server para aplicar todas essas alterações:

  1. Abra o SQL Server Configuration Manager.

  2. Selecione Serviços do SQL Server no painel à esquerda.

  3. Clique com o botão direito do mouse no serviço do SQL Server e selecione Reiniciar.

    Captura de tela mostrando a chamada do comando de reinicialização do SQL Server.

Após a reinicialização, execute o seguinte script T-SQL no SQL Server para validar a configuração de sua instância do SQL Server:

-- Run on SQL Server
-- Shows the version and CU of SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';
GO
-- Shows if the Always On availability groups feature is enabled
SELECT SERVERPROPERTY ('IsHadrEnabled') as 'Is Always On enabled? (1 true, 0 false)';
GO
-- Lists all trace flags enabled on SQL Server
DBCC TRACESTATUS;

Sua versão do SQL Server deve ser uma das versões com suporte com as atualizações de serviço apropriadas aplicadas. O recurso grupos de disponibilidade Always On deve ser habilitado, e você deve habilitar os sinalizadores de rastreamento -T1800 e -T9567. A captura de tela a seguir é um exemplo do resultado esperado para uma instância do SQL Server configurada corretamente:

Captura de tela mostrando o resultado esperado no SSMS.

Definir o banco de dados como um modelo de recuperação completa

Os bancos de dados migrados por meio do link devem estar no modelo de recuperação completa e ter pelo menos um backup.

Execute o código a seguir no SQL Server para todos os bancos de dados que você deseja migrar. Substitua <DatabaseName> pelo nome atual do banco de dados.

-- Run on SQL Server
-- Set full recovery model for all databases you want to migrate.
ALTER DATABASE [<DatabaseName>] SET RECOVERY FULL
GO

-- Execute backup for all databases you want to migrate.
BACKUP DATABASE [<DatabaseName>] TO DISK = N'<DiskPath>'
GO

Importar chaves de autoridade de certificado raiz confiável do Azure para o SQL Server

Para confiar nos certificados de chave pública da Instância Gerenciada de SQL que o Azure emite, você precisa importar as chaves da AC (autoridade de certificação raiz) confiável do Azure para o SQL Server.

Você pode baixar as chaves de autoridade de certificação raiz nos detalhes da Autoridade de Certificação do Azure. No mínimo, baixe os certificados DigiCert Global Root G2 e Microsoft RSA Root Certificate Authority 2017 e importe-os para sua instância do SQL Server.

Observação

O certificado raiz no caminho de certificação de um certificado de chave pública da Instância Gerenciada de SQL é emitido por uma AC (Autoridade de Certificação) raiz confiável do Azure. A CA raiz específica pode mudar ao longo do tempo à medida que o Azure atualiza sua lista de CAs confiáveis. Para uma instalação simplificada, instale todos os certificados de autoridade de certificação raiz listados nas Autoridades de Certificação Raiz do Azure. Você pode instalar apenas a chave de AC necessária identificando o emissor de uma chave pública da Instância Gerenciada de SQL importada anteriormente.

Salve os certificados locais na instância do SQL Server, como no caminho de exemplo C:\certs\<name of certificate>.crt e importe os certificados desse caminho usando o script Transact-SQL a seguir. Substitua <name of certificate> pelo nome do certificado real: DigiCert Global Root G2 e Microsoft RSA Root Certificate Authority 2017, que são os nomes necessários para esses dois certificados.

-- Run on SQL Server-- Import <name of certificate> root-authority certificate (trusted by Azure), if not already present
CREATE CERTIFICATE [DigiCertPKI] FROM FILE = 'C:\certs\DigiCertGlobalRootG2.crt'
DECLARE @CERTID int
SELECT @CERTID = CERT_ID('DigiCertPKI')
EXEC sp_certificate_add_issuer @CERTID, N'*.database.windows.net';
GO
CREATE CERTIFICATE [MicrosoftPKI] FROM FILE = 'C:\certs\Microsoft RSA Root Certificate Authority 2017.crt'
DECLARE @CERTID int
SELECT @CERTID = CERT_ID('MicrosoftPKI')
EXEC sp_certificate_add_issuer @CERTID, N'*.database.windows.net';
GO

Dica

Se o sp_certificate_add_issuer procedimento armazenado estiver ausente em seu ambiente do SQL Server, sua instância do SQL Server provavelmente não terá a atualização de serviço apropriada instalada.

Por fim, verifique todos os certificados criados usando a seguinte DMV (exibição de gerenciamento dinâmico):

-- Run on SQL Server
USE master
SELECT * FROM sys.certificates

Configurar a conectividade de rede

Para que o link funcione, você deve ter conectividade de rede entre o SQL Server e a Instância Gerenciada de SQL. A opção de rede escolhida depende se sua instância do SQL Server está ou não em uma rede do Azure.

SQL Server fora do Azure

Se você hospedar sua instância do SQL Server fora do Azure, poderá estabelecer uma conexão VPN entre o SQL Server e a Instância Gerenciada de SQL usando uma destas opções:

Dica

Para obter o melhor desempenho de rede ao replicar dados, use o ExpressRoute. Provisionar um gateway com largura de banda suficiente para seu caso de uso.

SQL Server em Máquinas Virtuais do Azure

Implantar o SQL Server em Máquinas Virtuais do Azure na mesma rede virtual do Azure que hospeda a Instância Gerenciada de SQL é o método mais simples, pois a conectividade de rede existe automaticamente entre as duas instâncias. Para obter mais informações, confira Início Rápido: Configure uma VM do Azure para conectar à Instância Gerenciada de SQL do Azure.

Se a instância do SQL Server em Máquinas Virtuais do Azure estiver em uma rede virtual diferente da instância gerenciada de SQL, você precisará conectar as duas redes virtuais. As redes virtuais não precisam estar na mesma assinatura para que esse cenário funcione.

Você tem duas opções para conectar redes virtuais:

O emparelhamento é preferível porque usa a rede de backbone da Microsoft. Portanto, do ponto de vista da conectividade, não há nenhuma diferença perceptível na latência entre máquinas virtuais em uma rede virtual emparelhada e na mesma rede virtual. Há suporte para emparelhamento de rede virtual entre redes na mesma região. Há suporte para emparelhamento de rede virtual global para instâncias hospedadas em sub-redes criadas após 22 de setembro de 2020. Para obter mais informações, confira as Perguntas frequentes.

Portas de rede entre os ambientes

Independentemente do mecanismo de conectividade, você deve atender aos seguintes requisitos para que o tráfego de rede flua entre os ambientes:

As regras do NSG (Grupo de Segurança de Rede) na sub-rede que hospeda a Instância Gerenciada de SQL devem permitir:

  • Porta de entrada 5022 e intervalo de portas 11000-11999 para receber tráfego do endereço IP do SQL Server de origem
  • Porta de saída 5022 para enviar tráfego para o endereço IP do SQL Server de destino

A porta 5022 não pode ser alterada na Instância Gerenciada de SQL.

Todos os firewalls na rede que hospeda o SQL Server e o sistema operacional host devem permitir:

  • Porta de entrada 5022 aberta para receber tráfego do intervalo de IP de origem da sub-rede MI /24 (por exemplo, 10.0.0.0/24)
  • As portas de saída 5022 e o intervalo de portas 11000-11999 foram abertos para enviar tráfego para o intervalo de IP de destino da sub-rede MI (exemplo 10.0.0.0/24)

A porta 5022 pode ser personalizada no lado do SQL Server, mas o intervalo de portas 11000-11999 deve ser aberto como está.

Diagrama mostrando os requisitos de rede para configurar o link entre o SQL Server e a instância gerenciada de SQL.

A tabela a seguir descreve as ações da porta para cada ambiente:

Ambiente O que fazer
SQL Server (fora do Azure) Abra o tráfego de entrada e de saída na porta 5022 para o firewall de rede para toda a sub-rede do intervalo de IP da Instância Gerenciada do SQL. Se necessário, faça o mesmo no firewall do Windows do sistema operacional host do SQL Server.
SQL Server (no Azure) Abra o tráfego de entrada e de saída na porta 5022 para o firewall de rede para toda a sub-rede do intervalo de IP da Instância Gerenciada do SQL. Se necessário, faça o mesmo no firewall do Windows do sistema operacional host do SQL Server. Para permitir a comunicação na porta 5022, crie uma regra de NSG (grupo de segurança de rede) na rede virtual que hospeda a VM (máquina virtual).
Instância Gerenciada de SQL Crie uma regra NSG no portal do Azure para permitir o tráfego de entrada e saída do endereço IP e da rede que hospeda o SQL Server na porta 5022 e o intervalo de portas 11000-11999.

Para abrir portas no Firewall do Windows, use o seguinte script do PowerShell no sistema operacional host do Windows da instância do SQL Server:

New-NetFirewallRule -DisplayName "Allow TCP port 5022 inbound" -Direction inbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
New-NetFirewallRule -DisplayName "Allow TCP port 5022 outbound" -Direction outbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP

O diagrama a seguir mostra um exemplo de um ambiente de rede local, indicando que todos os firewalls no ambiente precisam ter portas abertas, incluindo o firewall do sistema operacional que hospeda a instância do SQL Server e quaisquer firewalls e gateways corporativos:

Diagrama mostrando a infraestrutura de rede para configurar o link entre o SQL Server e a instância gerenciada de SQL.

Importante

  • Você precisa abrir portas em todos os firewalls no ambiente de rede, incluindo o servidor host e quaisquer firewalls ou gateways corporativos na rede. Em ambientes corporativos, talvez seja necessário mostrar ao administrador de rede as informações nesta seção para ajudar a abrir portas adicionais na camada de rede corporativa.
  • Embora você possa optar por personalizar o ponto de extremidade no lado do SQL Server, você não pode alterar ou personalizar números de porta para SQL Managed Instance.
  • Os intervalos de endereços IP das sub-redes que hospedam as instâncias gerenciadas e o SQL Server não devem se sobrepor.

Adicionar URLs à lista de permissões

Dependendo das configurações de segurança de rede, talvez seja necessário adicionar URLs à sua lista de permissões para o FQDN da Instância Gerenciada de SQL e alguns dos pontos de extremidade de Gerenciamento de Recursos usados pelo Azure.

Adicione os seguintes recursos à sua lista de permissões:

  • FQDN (nome de domínio totalmente qualificado) da Instância Gerenciada de SQL. Por exemplo: managedinstance.a1b2c3d4e5f6.database.windows.net.
  • Autoridade do Microsoft Entra
  • ID do recurso de endpoint do Microsoft Entra
  • Ponto de Extremidade do Resource Manager
  • Ponto de extremidade de serviço

Siga as etapas na seção Configurar o SSMS para nuvens governamentais para acessar a interface Ferramentas no SSMS (SQL Server Management Studio) e identificar URLs específicas para os recursos em sua nuvem que você precisa adicionar à sua lista de permissões.

Migrar um certificado de um banco de dados protegido por TDE (opcional)

Se você estiver vinculando um banco de dados do SQL Server protegido pela Transparent Data Encryption (TDE) a uma instância gerenciada de SQL, deverá migrar o certificado de criptografia correspondente da instância do SQL Server da VM do Azure ou local para a instância gerenciada de SQL antes de usar o link. Para etapas detalhadas, consulte Migrar um certificado de um banco de dados protegido por TDE-para a Instância Gerenciada de SQL do Azure.

Os bancos de dados da Instância Gerenciada de SQL criptografados com chaves TDE gerenciadas pelo serviço não podem ser vinculados ao SQL Server. Você só poderá vincular um banco de dados criptografado ao SQL Server se criptografá-lo com uma chave gerenciada pelo cliente e o servidor de destino tiver acesso à mesma chave usada para criptografar o banco de dados. Para obter mais informações, confira Configurar SQL Server TDE com o Azure Key Vault.

Observação

O Azure Key Vault tem suporte do SQL Server no Linux a partir da Atualização Cumulativa 14 para SQL Server 2022.

Testar a conectividade de rede

Antes de iniciar a migração, teste a conectividade de rede entre sua instância do SQL Server e a Instância Gerenciada de SQL. Você pode testar a conectividade diretamente do portal do Azure como parte do processo de migração. No entanto, você também pode testar a conectividade manualmente usando Transact-SQL e o SQL Server Agent. Para obter mais informações, consulte Testar a conectividade de rede.

Para testar a conectividade por meio do portal do Azure, siga estas etapas:

  1. Selecione Migrar dados no painel de migração de banco de dados para o recurso de instância do SQL Server.

  2. Selecione a opção MI link.

  3. Selecione os bancos de dados de destino que você deseja migrar e, em seguida , use Avançar: Configurações para ir para a próxima guia.

  4. Na guia Configurações , forneça o nome do link e do grupo de disponibilidade de origem. Em seguida, use a conexão de teste para validar a conectividade de rede entre o SQL Server e a Instância Gerenciada de SQL:

    Captura de tela que mostra o botão de conexão de teste de link da Instância Gerenciada.

Considere os seguintes pontos:

  • Para evitar falsos negativos, todos os firewalls ao longo do caminho de rede devem permitir o tráfego de ICMP (Internet Control Message Protocol).
  • Para evitar falsos positivos, todos os firewalls ao longo do caminho de rede devem permitir o tráfego no protocolo UCS proprietário do SQL Server. Bloquear o protocolo pode levar a um teste de conexão bem-sucedido, mas a conexão não é criada.
  • As configurações avançadas de firewall com guardrails no nível de pacote precisam ser configuradas corretamente para permitir o tráfego entre o SQL Server e a Instância Gerenciada de SQL.

Limitações

Considere as seguintes limitações:

  • As limitações do link da Instância Gerenciada se aplicam às migrações por meio do portal do Azure.
  • O cancelamento de uma migração requer permissões sysadmin na instância do SQL Server de origem. Se a instância do SQL Server não estiver usando o princípio do menor privilégio, atribua manualmente permissões de sysadmin à conta NT AUTHORITY\SYSTEM.
  • A configuração de um link por meio do portal do Azure para fins de migração não é compatível com links criados manualmente, seja por meio do SSMS (SQL Server Management Studio) ou Transact-SQL (T-SQL). Examine o problema conhecido para saber mais.
  • O monitoramento da migração por meio do portal do Azure está disponível apenas para instâncias do SQL Server que atendem aos requisitos de licenciamento de monitoramento.

Solução de problemas comuns

Para solucionar problemas comuns ao migrar para a Instância Gerenciada de SQL do Azure, confira Solucionar problemas de migração.