Obter recomendações do Azure para migrar seu banco de dados do SQL Server

A extensão de Migração SQL do Azure para o Azure Data Studio ajuda você a avaliar seus requisitos de banco de dados, obter as recomendações de SKU do tamanho certo para recursos do Azure e migrar seu banco de dados do SQL Server para o Azure.

Saiba como usar essa experiência unificada, coletando dados de desempenho de sua instância do SQL Server de origem para obter recomendações do Azure do tamanho certo para seus destinos SQL do Azure.

Visão geral

Antes de migrar para o SQL do Azure, você pode usar a extensão de Migração do SQL no Azure Data Studio para ajudá-lo a gerar recomendações do tamanho certo para o Banco de Dados SQL do Azure, a Instância Gerenciada do SQL do Azure e o SQL Server em destinos de Máquinas Virtuais do Azure. A ferramenta ajuda a coletar dados de desempenho da instância SQL de origem (em execução local ou em outra nuvem) e recomenda uma configuração de computação e armazenamento para atender às necessidades da carga de trabalho.

O diagrama apresenta o fluxo de trabalho para recomendações do Azure na extensão de Migração SQL do Azure para o Azure Data Studio:

Diagram that shows the workflow of the SKU recommendation process.

Observação

O recurso de avaliação e de recomendação do Azure na extensão de Migração de SQL do Azure para o Azure Data Studio oferece suporte às instâncias do SQL Server de origem em execução no Windows ou Linux.

Pré-requisitos

Para começar a usar as recomendações do Azure para sua migração de banco de dados do SQL Server, você deve atender aos seguintes pré-requisitos:

Origens e destinos com suporte

As recomendações do Azure podem ser geradas para as seguintes versões do SQL Server:

  • Há suporte para o SQL Server 2008 e versões posteriores no Windows ou Linux.
  • O SQL Server em execução em outras nuvens pode ter suporte, mas a precisão dos resultados pode variar

As recomendações do Azure podem ser geradas para os seguintes destinos SQL do Azure:

  • Banco de Dados SQL do Azure
    • Famílias de hardware: Série padrão (Gen5)
    • Níveis de serviço: Uso geral, Crítico de negócios, Hiperescala
  • Instância Gerenciada de SQL do Azure
    • Famílias de hardware: Série Standard (Gen5), Série Premium, Série Premium otimizada para memória
    • Níveis de serviço: Uso geral, Crítica para os negócios
  • SQL Server na Máquina Virtual do Azure
    • Famílias de VM: uso geral, otimizado para memória
    • Famílias de armazenamento: SSD Premium

Coleta de dados de desempenho

Antes que as recomendações possam ser geradas, os dados de desempenho precisam ser coletados da instância do SQL Server de origem. Durante essa etapa de coleta de dados, várias exibições dinâmicas do sistema (DMVs ) da instância do SQL Server são consultadas para capturar as características de desempenho da carga de trabalho. A ferramenta captura métricas, incluindo CPU, memória, armazenamento e uso de E/S a cada 30 segundos, e salva os contadores de desempenho localmente em sua máquina como um conjunto de arquivos CSV.

Nível de instância

Esses dados de desempenho são coletados uma vez por instância do SQL Server:

Dimensão desempenho Descrição Visão de Gerenciamento Dinâmico (Detran)
SqlInstanceCpuPercent A quantidade de CPU que o processo do SQL Server estava usando, como uma porcentagem sys.dm_os_ring_buffers
PhysicalMemoryInUse Ocupado geral pela memória do processo do SQL Server sys.dm_os_process_memory
MemoryUtilizationPercentage Utilização de memória do SQL Server sys.dm_os_process_memory

Nível de banco de dados

Dimensão desempenho Descrição Visão de Gerenciamento Dinâmico (Detran)
DatabaseCpuPercent A porcentagem total de CPU usada por um banco de dados sys.dm_exec_query_stats
CachedSizeInMb Tamanho total em Megabytes de cache usado por um banco de dados sys.dm_os_buffer_descriptors

Nível de arquivo

Dimensão desempenho Descrição Visão de Gerenciamento Dinâmico (Detran)
LeiaIOInMb O número total de megabytes lidos deste arquivo sys.dm_io_virtual_file_stats
WriteIOInMb O número total de megabytes gravados neste arquivo sys.dm_io_virtual_file_stats
NumOfReads O número total de leituras emitidas neste arquivo sys.dm_io_virtual_file_stats
NumOfWrites O número total de gravações emitidas neste arquivo sys.dm_io_virtual_file_stats
Latência de leitura A latência de leitura de E/S neste arquivo sys.dm_io_virtual_file_stats
Latência de gravação A latência de gravação de E/S neste arquivo sys.dm_io_virtual_file_stats

Um mínimo de 10 minutos de coleta de dados é necessário antes que uma recomendação possa ser gerada, mas para avaliar com precisão sua carga de trabalho, é recomendável executar a coleta de dados por um período suficientemente longo para capturar o uso no pico e fora do pico.

Para iniciar o processo de coleta de dados, comece conectando-se à sua instância SQL de origem no Azure Data Studio e inicie o assistente de Migração SQL. Na etapa 2, selecione "Obter recomendação do Azure". Selecione "Coletar dados de desempenho agora" e selecione uma pasta em sua máquina onde os dados coletados serão salvos.

Screenshot that shows the wizard pane to collect performance data for SKU recommendations.

Importante

O processo de coleta de dados é executado por 10 minutos a fim de gerar a primeira recomendação. É importante iniciar o processo de coleta de dados quando a carga de trabalho do banco de dados ativo refletir o uso semelhante aos dos seus cenários de produção.

Depois que a primeira recomendação for gerada, você poderá continuar a executar o processo de coleta de dados para refinar as recomendações. Essa opção será especialmente útil se os padrões de uso variarem ao longo do tempo.

O processo de coleta de dados começa quando você seleciona Iniciar. A cada 10 minutos, os pontos de dados coletados são agregados e o máximo, a média e a variância de cada contador serão gravados no disco em um conjunto de três arquivos CSV.

Normalmente, você vê um conjunto de arquivos CSV com os seguintes sufixos na pasta selecionada:

  • SQLServerInstance_CommonDbLevel_Counters.csv: Contém dados de configuração estática sobre o layout e os metadados do arquivo de banco de dados.
  • SQLServerInstance_CommonInstanceLevel_Counters.csv: Contém dados estáticos sobre a configuração de hardware da instância do servidor.
  • SQLServerInstance_PerformanceAggregated_Counters.csv: contém dados de desempenho agregados que são atualizados com frequência.

Durante esse tempo, deixe o Azure Data Studio aberto, embora você possa continuar com outras operações. A qualquer momento, você pode interromper o processo de coleta de dados retornando a esta página e selecionando Parar coleta de dados.

Gerando recomendações do tamanho certo

Se você já tiver coletado dados de desempenho de uma sessão anterior ou usando uma ferramenta diferente (como o Assistente de Migração de Banco de Dados), poderá importar quaisquer dados de desempenho existentes selecionando a opção Eu já tenho os dados de desempenho. Prossiga para selecionar a pasta onde seus dados de desempenho (três arquivos .csv) são salvos e selecione Iniciar para iniciar o processo de recomendação.

Screenshot that shows the pane to import performance data for a SKU recommendation.

Observação

A primeira etapa do assistente de Migração SQL pede que você selecione um conjunto de bancos de dados para avaliar, e esses são os únicos bancos de dados que serão levados em consideração durante o processo de recomendação.

No entanto, o processo de coleta de dados de desempenho coleta contadores de desempenho para todos os bancos de dados da instância do SQL Server de origem, não apenas os que foram selecionados.

Isso significa que os dados de desempenho coletados anteriormente podem ser usados para regenerar repetidamente recomendações para um subconjunto diferente de bancos de dados, especificando uma lista diferente na etapa um.

Parâmetros de recomendação

Há várias configurações configuráveis que podem afetar suas recomendações.

Screenshot that shows the recommendation parameters section.

Selecione a opção Editar parâmetros para ajustar esses parâmetros de acordo com suas necessidades.

Screenshot that shows the different recommendation parameters.

  • Fator de escala:
    Essa opção permite que você forneça um buffer para aplicar a cada dimensão de desempenho. Essa opção leva em conta problemas como uso sazonal, histórico de desempenho curto e prováveis aumentos no uso futuro. Por exemplo, se você determinar que um requisito de CPU de quatro vCore tem um fator de escala de 150%, o verdadeiro requisito de CPU é de seis vCores.

    O volume de fator de escala padrão é de 100%.

  • Percentual de utilização:
    O percentil de pontos de dados a serem usados como dados de desempenho é agregado.

    O valor padrão é o 95º percentil.

  • Habilite os recursos de visualização:
    Essa opção permite que sejam recomendadas configurações que podem ainda não estar disponíveis para todos os usuários em todas as regiões.

    Por padrão, essa opção é desativada.

  • Habilite a recomendação elástica:

    Essa opção usa um modelo de recomendação alternativo que utiliza perfis personalizados de preço-desempenho em relação aos clientes existentes na nuvem.

    Por padrão, essa opção é desativada.

Importante

O processo de coleta de dados é encerrado se você fechar o Azure Data Studio. Os dados que foram coletados até esse ponto são salvos em sua pasta.

Se você fechar o Azure Data Studio enquanto a coleta de dados estiver em andamento, use uma das seguintes opções para reiniciar a coleta de dados:

  • Reabra o Azure Data Studio e importe os arquivos de dados salvos para sua pasta local. Em seguida, gere uma recomendação dos dados coletados.
  • Reabra o Azure Data Studio e inicie a coleta de dados novamente usando o assistente de migração.

Permissões mínimas

Para consultar as exibições do sistema necessárias para a coleta de dados de desempenho, são necessárias permissões específicas para o logon do SQL Server usado para essa tarefa. Você pode criar um usuário mínimo privilegiado para avaliação e coleta de dados de desempenho usando o seguinte script:

-- Create a login to run the assessment
USE master;
GO

CREATE LOGIN [assessment] WITH PASSWORD = '<STRONG PASSWORD>';

-- Create user in every database other than TempDB and model and provide minimal read-only permissions
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''TempDB'',''model''))  
   BEGIN TRY
      CREATE USER [assessment] FOR LOGIN [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT SELECT ON sys.sql_expression_dependencies TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'
   
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))  
   BEGIN TRY
      GRANT VIEW DATABASE STATE TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH'

-- Provide server level read-only permissions
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [assessment];
GRANT VIEW DATABASE STATE TO assessment;
GRANT VIEW SERVER STATE TO assessment;
GRANT VIEW ANY DEFINITION TO assessment;

-- Provide msdb specific permissions
USE msdb;
GO

GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [assessment];

-- USE master;
-- GO
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [assessment] END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCH';
-- DROP LOGIN [assessment];

Cenários e limitações sem suporte

  • As Recomendações do Azure não incluem estimativas de preço, pois essa situação pode variar dependendo da região, da moeda e dos descontos, como o Benefício Híbrido do Azure. Para obter estimativas de preço, use a Calculadora de Preços do Azure ou crie uma avaliação SQL no Azure Migrate.
  • Não há suporte para recomendações para o Banco de Dados SQL do Azure com o modelo de compra baseado em DTU.
  • Atualmente, as recomendações do Azure para a camada de computação sem servidor do Banco de Dados SQL do Azure e os Pools Elásticos não têm suporte.

Solução de problemas

  • Nenhuma recomendação gerada
    • Se nenhuma recomendação for gerada, essa situação pode significar que nenhuma configuração foi identificada que possa satisfazer totalmente os requisitos de desempenho da instância de origem. Para ver os motivos pelos quais um determinado tamanho, camada de serviço ou família de hardware foi desqualificado:
      • Acesse os logs do Azure Data Studio indo para Ajuda > Mostrar todos os comandos > Abrir pasta de logs de extensão
      • Navegue até Microsoft.mssql > SqlAssessmentLogs > abrir SkuRecommendationEvent.log
      • O log contém um rastreamento de cada configuração potencial que foi avaliada e o motivo pelo qual ela foi/não foi considerada uma configuração qualificada: Screenshot that shows SKU recommendations log.
    • Tente regenerar a recomendação com a recomendação elástica ativada. Essa opção usa um modelo de recomendação alternativo, que utiliza perfis personalizados de preço-desempenho em relação aos clientes existentes na nuvem.

Próximas etapas