Partilhar via


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

Pode usar o Azure Database Migration Service através do portal Azure, para migrar bases de dados de uma instância local de SQL Server para Azure SQL Database (offline).

Neste tutorial, saiba como migrar o banco de dados de exemplo AdventureWorks2022 de uma instância local do SQL Server para o Banco de Dados SQL do Azure, usando o 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, aprenderás como:

  • Criar uma instância do Serviço de Migração de Banco de Dados do Azure
  • Inicie a migração e monitore 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. Numa migração de offline, o tempo de inatividade do aplicativo começa quando a migração é iniciada. Recomenda-se testar uma migração offline para determinar se o tempo de inatividade é aceitável.

Opções de migração

A secção seguinte descreve como utilizar o Azure Database Migration Service com o portal Azure.

Pré-requisitos

Antes de começar o tutorial:

  • Certifique-se de que você pode acessar o portal do Azure.

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

  • Ter 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 nova 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 é membro da função db_datareader e se o logon da instância do SQL Server de destino é 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 SHIR mínima com suporte necessária é 5.37 ou superior.

  • Para 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## Os 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 utilizador dbo tem todas as permissões de base de dados na base 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 sobre a função de nível de banco de dados dbmanager que existe no master banco de dados.
##MS_DatabaseConnector## Os membros da função de servidor fixa ##MS_DatabaseConnector## podem conectar-se a qualquer banco de dados sem precisar de uma conta de usuário no banco de dados para a conexão.
##MS_DefinitionReader## Os membros da função de servidor fixa ##MS_DefinitionReader## podem ler todas as vistas de catálogo cobertas por VIEW ANY DEFINITION em qualquer base de dados na qual o membro tenha uma conta de utilizador.
##MS_LoginManager## Os membros da função de servidor fixa ##MS_LoginManager## podem criar e eliminar logins. É recomendável usar essa função de servidor sobre a função de nível de banco de dados loginmanager que existe no master banco de dados.

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 e os dados do banco de dados usando o Serviço de Migração de Banco de Dados. Também pode usar outras ferramentas, como a extensão SQL Database Projects no Visual Studio Code, para migrar o esquema antes de selecionar a lista de tabelas a migrar.

Observação

Se não existirem 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 não existir nenhuma tabela 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

1º Passo: No portal do Azure, navegue até a página 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 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 que você deseja usar, 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 nova instância do Serviço de Migração de Banco de Dados

Para criar uma nova 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 de criação 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 Tipo de servidor de origem e de destino, escolha Serviço de Migração de Banco de Dados e escolha 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 Local e insira o nome do Serviço de Migração de Banco de Dados. Selecione Avaliar + Criar. Isso cria o Serviço de Migração de Banco de Dados do Azure.

    Captura de tela que mostra os detalhes de entrada necessários do Serviço de Migração de Banco de Dados.

  4. Se o tempo de execução de integração auto-hospedado (SHIR) for necessário, na página de visão geral do Serviço de Migração de Banco de Dados e em Configurações, selecione Tempo de execução de integração e conclua as seguintes etapas:

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

      Captura de ecrã que mostra o link para descarregar e instalar o runtime de integração.

      Quando a instalação estiver concluída, o Microsoft Integration Runtime Configuration Manager será aberto automaticamente para iniciar o processo de registro.

    2. Na tabela Chave 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 destaca a tabela de chaves de autenticação no assistente.

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

      Depois de registar o self-hosted Integration Runtime, feche o Microsoft Integration Runtime Configuration Manager. Pode levar vários minutos para refletir os detalhes do nó no Portal do Azure para o Serviço de Migração de Base de Dados, em Configurações de Tempo de Execução de Integração>.

      Captura de ecrã que realça o estado SHIR no portal do Azure.

      Observação

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

Iniciar uma nova migração

  1. Para iniciar uma nova migração, vá para 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 sua 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 ecrã do Painel de Migração da Base 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 ecrã do novo cenário de migração selecionado.

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

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

      Captura de ecrã do Source Tracking.

    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 ecrã de Ligar à fonte.

    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 Próximo: Conectar-se ao Banco de Dados SQL do Azure de destino.

      Captura de ecrã de selecionar bd.

    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 destino:

      Captura de tela do destino de conexão.

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

      Captura de ecrã de Bases de dados de mapas.

    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 (selecionado)
      • Índices
      • Visualizações
      • Procedimentos armazenados (StoredProcedures)
      • SINÔNIMOS
      • Gatilhos DDL (DdlTriggers)
      • Predefinições
      • Catálogos de texto completo (FullTextCatalogs)
      • Guias de plano (PlanGuides)
      • Funções
      • Regras
      • Funções do 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)
      • Utilizadores* (nem todos os tipos de utilizadores)
      • 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 Next: Database migration summary.

      Captura de ecrã do esquema e tabelas selecionados.

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

      Captura de Ecrã 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 do 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 ecrã da descrição geral do Serviço de Migração de Base de Dados do Azure no portal do Azure.

  2. Na guia Migrações , você pode acompanhar as migrações em andamento, concluídas e com falha (se houver) ou pode exibir 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 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 tabela a seguir descreve os status possíveis:

    Situação Descrição
    Criação O serviço está iniciando a migração.
    Preparação para a cópia O serviço está desativando estatísticas automáticas, gatilhos e índices na tabela de destino.
    Copiando Os dados estão sendo copiados do banco de dados de origem para o banco de dados de destino.
    Cópia concluída A cópia dos dados foi concluída. O serviço está aguardando que outras tabelas terminem a cópia para que possa iniciar as etapas finais de retorno das tabelas ao esquema original.
    Reconstruindo índices O serviço está a reconstituir índices nas tabelas de destino.
    Bem-sucedido Todos os dados são copiados e os índices são reconstruídos.
  3. Em Nome da fonte, selecione um nome de banco de dados para abrir a exibição de tabela.. Nesta exibição detalhada, você vê 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 são migrados para o destino do Banco de Dados SQL do Azure, o Serviço de Migração de Banco de Dados atualiza o status da migração de Em andamento para Com êxito.

    Captura de ecrã 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 linhas). As tabelas que não têm dados não aparecem na lista, mesmo que você tenha selecionado 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 Azure Data Factory (ADF) para movimentação de dados e, portanto, respeita as limitações do ADF. Um ADF correspondente é criado quando um serviço de migração de banco de dados também é criado. Assim, aplicam-se limites de fábrica por serviço.

  • A máquina onde o SHIR está instalado atua como o cálculo para a migração. Certifique-se de que esta máquina pode lidar com a carga de CPU e memória da cópia de dados. Para saber mais, consulte Criar e configurar um tempo de execução de integração auto-hospedado.
  • Limite de 100.000 tabelas por banco de dados.
  • 10.000 migrações simultâneas de banco de dados por serviço.
  • A velocidade de migração depende muito da SKU do Banco de Dados SQL do Azure de destino e do host do Integration Runtime auto-hospedado.
  • A migração do Azure SQL Database não é bem escalável com o número de tabelas, devido à sobrecarga do ADF no início das 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 de nomes de tabela do Banco de Dados SQL do Azure com caracteres de byte duplo. A mitigação consiste em renomear tabelas antes da migração; eles podem ser alterados de volta aos seus nomes originais após a migração bem-sucedida.
  • Tabelas com colunas de blob grandes podem falhar na migração devido ao tempo limite de execução.
  • No momento, não há suporte para nomes de bancos de dados com o SQL Server reservado.
  • Atualmente, não há suporte para nomes de banco de dados que incluam 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.