Compartilhar via


Tutorial: migrar o SQL Server para o Banco de Dados SQL do Azure (offline)

Você pode usar o Serviço de Migração de Banco de Dados do Azure por meio do portal do Azure para migrar bancos de dados de uma instância local do SQL Server para o Banco de Dados SQL do Azure (offline).

Neste tutorial, saiba como migrar o banco de dados de exemplo de uma instância local do SQL Server para o Banco de Dados SQL do Azure usando o AdventureWorks2022 Serviço de Migração de Banco de Dados. Este tutorial usa o modo de migração offline, que considera um tempo de inatividade aceitável durante o processo de migração.

Neste tutorial, você aprenderá como:

  • Criar uma instância do Serviço de Migração de Banco de Dados do Azure
  • Iniciar a migração e monitorar o progresso até a conclusão

Importante

Atualmente, as migrações online para destinos do Banco de Dados SQL do Azure não estão disponíveis com o Serviço de Migração de Banco de Dados do Azure. Na migração offline, o tempo de inatividade do aplicativo começa quando a migração é iniciada. É recomendável testar uma migração offline para determinar se o tempo de inatividade é aceitável.

Opções de migração

A seção a seguir descreve como usar o Serviço de Migração de Banco de Dados do Azure com o portal do Azure.

Pré-requisitos

Antes de começar o tutorial:

  • Verifique se você pode acessar o portal do Azure.

  • Verifique se o provedor de recursos Microsoft.DataMigration está registrado em sua assinatura.

  • Tenha uma conta do Azure atribuída a uma das seguintes funções internas:

    • Colaborador do Banco de Dados SQL do Azure de destino
    • Função de leitor para o grupo de recursos do Azure que contém o Banco de Dados SQL do Azure de destino
    • Função de Proprietário ou Colaborador para a assinatura do Azure (necessária se você criar uma instância do Serviço de Migração de Banco de Dados do Azure)

    Como alternativa ao uso de uma dessas funções internas, você pode atribuir uma função personalizada.

  • Crie um Banco de Dados SQL do Azure de destino.

  • Verifique se o logon do SQL Server que se conecta à instância do SQL Server de origem é um membro da função db_datareader e se o logon da instância do SQL Server de destino é um membro da função db_owner.

  • Para migrar o esquema de banco de dados da origem para o Banco de Dados SQL do Azure de destino usando o Serviço de Migração de Banco de Dados, a versão mínima do SHIR com suporte necessária é 5.37 ou superior.

  • Para a migração de esquema, as permissões mínimas no SQL Server de origem são db_owner para acessar o banco de dados e, no Banco de Dados SQL do Azure de destino, o usuário deve ser membro de todas as funções de nível de servidor na tabela a seguir:

Funções Descrição
##MS_DatabaseManager## Membros da função de servidor fixa ##MS_DatabaseManager## podem criar e excluir bancos de dados. Um membro da função ##MS_DatabaseManager## que cria um banco de dados torna-se o proprietário desse banco de dados, o que permite que esse usuário se conecte a esse banco de dados como o usuário dbo. O usuário dbo tem todas as permissões no banco de dados. Os membros da função ##MS_DatabaseManager## não têm necessariamente permissão para acessar bancos de dados que não possuem. É recomendável usar essa função de servidor em vez da função de nível do banco de dados dbmanager que existe no banco de dados master.
##MS_DatabaseConnector## Os membros da função de servidor fixa ##MS_DatabaseConnector## podem se conectar a qualquer banco de dados sem exigir que uma conta de usuário no banco de dados para conectar-se.
##MS_DefinitionReader## Os membros da função de servidor fixa ##MS_DefinitionReader## podem ler todas as exibições de catálogo cobertas por VIEW ANY DEFINITION qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário.
##MS_LoginManager## Os membros da função de servidor fixa ##MS_LoginManager## podem criar e excluir logons. É recomendável usar essa função de servidor em vez da função de nível de banco de dados loginmanager que existe no banco de dados master.

Preparar o Banco de Dados SQL do Azure de destino

Para criar o logon e o usuário no Banco de Dados SQL do Azure de destino, execute o seguinte script no master banco de dados:

CREATE LOGIN testuser WITH PASSWORD = '<password>';

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseManager## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_LoginManager## ADD MEMBER [testuser];
GO

CREATE USER testuser FOR LOGIN testuser;
EXECUTE sp_addRoleMember 'dbmanager', 'testuser';
EXECUTE sp_addRoleMember 'loginmanager', 'testuser';

Agora, você pode migrar o esquema de banco de dados e os dados usando o Serviço de Migração de Banco de Dados. Você também pode usar outras ferramentas, como a extensão Projetos do Banco de Dados SQL no Visual Studio Code, para migrar o esquema antes de selecionar a lista de tabelas a serem migradas.

Observação

Se não houver tabelas no destino do Banco de Dados SQL do Azure ou se nenhuma tabela for selecionada antes de iniciar a migração, o botão Avançar não estará disponível para iniciar a migração. Se nenhuma tabela existir no destino, você deverá selecionar a opção de migração de esquema para avançar.

Criar uma instância do Serviço de Migração de Banco de Dados

Etapa 1: no portal do Azure, navegue até a página do Serviço de Migração de Banco de Dados do Azure. Crie uma nova instância do Serviço de Migração de Banco de Dados do Azure ou reutilize uma instância existente criada anteriormente.

Usar uma instância existente do Serviço de Migração de Banco de Dados

Para usar uma instância existente do Serviço de Migração de Banco de Dados:

  • No portal do Azure, em os Serviços de Migração de Banco de Dados do Azure, selecione uma instância existente do Serviço de Migração de Banco de Dados a ser usada, garantindo que ela esteja presente no Grupo de Recursos e na região corretos.

    Captura de tela que mostra a visão geral do Serviço de Migração de Banco de Dados.

Criar uma instância do Serviço de Migração de Banco de Dados

Para criar uma instância do Serviço de Migração de Banco de Dados:

  1. No portal do Azure, em Serviço de Migração de Banco de Dados do Azure, selecione Criar.

    Captura de tela que mostra a opção criar do Serviço de Migração de Banco de Dados.

  2. Em Selecionar cenário de migração e Serviço de Migração de Banco de Dados, selecione a entrada desejada, como o tipo de servidor de Origem e de Destino, selecione o Serviço de Migração de Banco de Dados e Selecionar.

    Captura de tela que mostra cenários de migração do Serviço de Migração de Banco de Dados.

  3. Na próxima tela Criar Serviço de Migração de Dados, selecione sua assinatura e grupo de recursos, selecione Locale insira o nome do Serviço de Migração de Banco de Dados. Selecione Examinar + criar. Isso cria o Serviço de Migração de Banco de Dados do Azure.

    Captura de tela que mostra os detalhes de entradas obrigatórias do Serviço de Migração de Banco de Dados.

  4. Se o SHIR (runtime de integração auto-hospedada) for requerido, na página de visão geral do Serviço de Migração de Banco de Dados e em Configurações, selecione Runtime de Integração e conclua as etapas a seguir:

    1. Selecione Configurar o runtime de integração e escolha o link Baixar e instalar o runtime de integração, para abrir o link de download em um navegador da Web. Baixe o runtime de integração e instale-o em um computador que atenda aos pré-requisitos para se conectar à instância do SQL Server de origem. Para obter mais informações, consulte o runtime de integração auto-hospedada para migrações de banco de dados.

      Captura de tela que mostra o link Baixar e instalar o runtime de integração.

      Quando a instalação for concluída, o Microsoft Integration Runtime Configuration Manager será aberto automaticamente para dar início ao processo de registro.

    2. Na tabela de chaves de autenticação, copie uma das chaves de autenticação fornecidas no assistente e cole-a no Microsoft Integration Runtime Configuration Manager.

      Captura de tela que realça a tabela de chaves de autenticação no assistente.

      Se a chave de autenticação for válida, um ícone de verificação verde aparecerá no Integration Runtime Configuration Manager. Uma verificação verde indica que você pode continuar a Registrar.

      Depois de registrar o runtime de integração auto-hospedada, feche o Microsoft Integration Runtime Configuration Manager. Pode levar vários minutos para que os detalhes do Nodo sejam refletidos no portal do Azure para o Serviço de Migração de Banco de Dados, em Configurações > Integration runtime.

      Captura de tela que destaca o status do SHIR no portal do Azure.

      Observação

      Para obter mais informações sobre o runtime de integração auto-hospedada, consulte Criar e configurar um runtime de integração auto-hospedada.

Iniciar uma nova migração

  1. Para iniciar uma nova migração, acesse o Serviço de Migração de Banco de Dados do Azure no portal do Azure e use +Criar para criar uma nova instância do Serviço de Migração de Banco de Dados ou selecione uma instância existente e vá para a instância do Serviço de Migração de Banco de Dados do Azure.

  2. No painel Visão geral da instância do Serviço de Migração de Banco de Dados do Azure, selecione Nova migração:

    Captura de tela do Painel de Migração de Banco de Dados do Azure.

  3. Em Selecionar novo cenário de migração, escolha sua origem, tipo de servidor de destino, modo de migração e escolha Selecionar.

    Captura de tela da seleção do novo cenário de migração.

  4. No Assistente de Migração Offline do Banco de Dados SQL do Azure, siga estas etapas:

    1. Na guia Detalhes da origem, insira detalhes para a instância do SQL Server de origem e selecione Avançar: Conectar-se ao SQL Server de origem:

      Captura de tela do Rastreamento de Fonte.

    2. Na guia Conectar ao SQL Server de origem , forneça detalhes da conexão e selecione Avançar: Selecione bancos de dados para migração:

      Captura de tela de Conectar à origem.

    3. Na guia Selecionar bancos de dados para migração , marque a caixa ao lado dos bancos de dados que você deseja migrar. Preencher a lista de bancos de dados pode levar algum tempo. Selecione Avançar: Conectar-se ao Banco de Dados SQL do Azure de destino.

      Captura de tela do banco de dados selecionado.

    4. Na guia Conectar ao Banco de Dados SQL do Azure de destino , forneça detalhes da conexão e selecione Avançar: Mapear bancos de dados de origem e de destino:

      Captura de tela do destino de conexão.

    5. Na guia Mapa de bancos de dados de origem e de destino , mapeie os bancos de dados entre a origem e o destino.

      Captura de tela dos bancos de dados do Mapa.

    6. (Opcional) Marque a caixa ao lado de Migrar esquema ausente para implantar objetos de esquema ausentes da origem para o destino do Banco de Dados SQL do Azure para migrar os seguintes objetos de esquema com uma única caixa de seleção:

      • Esquemas
      • Tabelas (selecionadas)
      • Índices
      • Visões
      • Procedimentos armazenados (StoredProcedures)
      • Sinônimos
      • Gatilhos DDL (DdlTriggers)
      • Configurações padrão
      • Catálogos de texto completo (FullTextCatalogs)
      • Guias de plano (PlanGuides)
      • Funções
      • Regras
      • Funções de aplicativo (ApplicationRoles)
      • Agregações definidas pelo usuário (UserDefinedAggregates)
      • Tipos de dados definidos pelo usuário (UserDefinedDataTypes)
      • Funções definidas pelo usuário (UserDefinedFunctions)
      • Tipos de tabela definidos pelo usuário (UserDefinedTableTypes)
      • Tipos definidos pelo usuário (UserDefinedTypes)
      • Usuários* (nem todos os tipos de usuário)
      • Coleções de Esquema XML (XmlSchemaCollections)

      Observação

      • Se você selecionar Migrar Esquema Ausente, o serviço de Migração de Banco de Dados executará a migração de esquema antes que os dados sejam migrados.
      • O DMS prossegue com a fase de migração de dados mesmo se a migração de esquema encontrar erros, a menos que haja problemas com objetos de tabela.

      Em seguida, use Selecionar todas as tabelas para migrar todas as tabelas ou use a caixa de entrada de texto para filtrar a lista de tabelas e selecionar tabelas individuais para migrar. Em seguida, selecione Avançar: resumo da migração do banco de dados.

      Captura de tela do esquema selecionado e das tabelas.

    7. Na guia Resumo da migração de banco de dados, examine os detalhes e selecione Iniciar migração, que inicia a migração de banco de dados e o leva automaticamente de volta ao painel do Serviço de Migração de Banco de Dados.

      Captura de tela do Resumo.

      Observação

      Para uma migração offline, o tempo de inatividade do aplicativo começa quando a migração é iniciada.

Monitorar a migração de banco de dados

  1. Para monitorar a migração do banco de dados, no painel Visão geral da instância do Serviço de Migração de Banco de Dados, selecione Monitorar migrações.

    Captura de tela da visão geral do Serviço de Migração de Banco de Dados do Azure no portal do Azure.

  2. Na guia Migrações, acompanhe as migrações que estão em andamento, que foram concluídas e que falharam (se houver) ou exiba todas as migrações de banco de dados. Na barra de menus, selecione Atualizar para atualizar o status da migração.

    Captura de tela do monitoramento do painel do DMS.

    O Serviço de Migração de Banco de Dados retorna o status de migração conhecido mais recente sempre que o status da migração é atualizado. A seguinte tabela descreve os possíveis status:

    Situação Descrição
    criando O serviço está iniciando a migração.
    Preparando para cópia O serviço está desabilitando estatísticas automáticas, gatilhos e índices na tabela de destino.
    Copiando Os dados estão sendo copiados do banco de dados de origem no banco de dados de destino.
    Cópia concluída A cópia de dados foi concluída. O serviço está aguardando outras tabelas para concluir a cópia a fim de iniciar as etapas finais para retornar as tabelas ao esquema original.
    Como recriar índices O serviço está reconstruindo índices em tabelas de destino.
    Êxito Todos os dados são copiados e os índices são recriados.
  3. No nome da fonte, selecione um nome de banco de dados para abrir a visão da tabela. Nesta exibição detalhada, você verá o status atual da migração, o número de tabelas que estão atualmente nesse status e um status detalhado de cada tabela:

    Captura de tela do monitoramento detalhado da migração.

  4. Quando todos os dados da tabela forem migrados para o destino do Banco de Dados SQL do Azure, o Serviço de Migração de Banco de Dados atualizará o status da migração de Em andamento para Bem-sucedido.

    Captura de tela do êxito detalhado da migração.

Observação

O Serviço de Migração de Banco de Dados otimiza a migração ignorando tabelas sem dados (0 linha). Tabelas que não têm dados não aparecem na lista, mesmo se você selecionou as tabelas quando criou a migração.

Você concluiu a migração para o Banco de Dados SQL do Azure. Passe por uma série de tarefas pós-migração para garantir que tudo funcione de forma suave e eficiente.


Limitações

A migração offline do Banco de Dados SQL do Azure utiliza pipelines do ADF (Azure Data Factory) para movimentação de dados e, portanto, segue as limitações do ADF. Um ADF correspondente é criado quando um serviço de migração de banco de dados também é criado. Portanto, os limites de fábrica se aplicam por serviço.

  • O computador em que o SHIR está instalado atua como o processamento para migração. Verifique se esse computador pode lidar com a carga de CPU e memória da cópia de dados. Para saber mais, examine Criar e configurar um runtime de integração auto-hospedada.
  • 100.000 tabelas por limite de banco de dados.
  • 10.000 migrações simultâneas de banco de dados por serviço.
  • A velocidade de migração depende muito do SKU do Banco de Dados SQL do Azure alvo e do host de runtime de integração auto-hospedado.
  • A migração do banco de dados SQL do Azure não se escala bem com um grande número de tabelas devido à sobrecarga causada pelo ADF ao iniciar atividades. Se um banco de dados tiver milhares de tabelas, o processo de inicialização de cada tabela pode levar alguns segundos, mesmo que elas sejam compostas por uma linha com 1 bit de dados.
  • Atualmente, não há suporte para migração aos nomes de tabela do Banco de Dados SQL do Azure com caracteres de byte duplo. A mitigação é renomear tabelas antes da migração. Elas podem ser alteradas de volta para seus nomes originais após a migração bem-sucedida.
  • Tabelas com colunas grandes de blobs podem falhar ao migrar devido a timeout.
  • Atualmente, não há suporte aos nomes de banco de dados com SQL Server reservados.
  • Atualmente, não há suporte aos nomes de banco de dados que incluem ponto e vírgula.
  • As colunas computadas não são migradas.
  • As colunas no banco de dados de origem que têm restrições padrão e contêm NULL valores são migradas com seus valores padrão definidos no banco de dados SQL do Azure de destino, em vez de reter os NULLs.