Registrar várias VMs do SQL no Azure com a extensão do agente IaaS do SQL

Aplica-se a:SQL Server na VM do Azure

Este artigo descreve como registrar suas VMs (máquinas virtuais) do SQL Server em massa no Azure com a extensão do agente IaaS do SQL usando o Register-SqlVMscmdlet do Azure PowerShell.

Como alternativa, você pode registrar todas as VMs de SQL Server automaticamenteouas VMs do SQL Server individuais manualmente.

Observação

As VMs do SQL Server implantadas por meio do mercado do Azure após outubro de 2022 têm o modelo menos privilegiado habilitado por padrão. Os modos de gerenciamento da extensão do Agente IaaS do SQL foram removidos em março de 2023.

Visão geral

O cmdlet Register-SqlVMs pode ser usado para registrar todas as máquinas virtuais em uma determinada lista de assinaturas, em grupos de recursos ou em uma lista de máquinas virtuais específica. O cmdlet registrará as máquinas virtuais e gerará um relatório e um arquivo de log.

O processo de registro não tem riscos, não tem nenhum tempo de inatividade e não reinicia o SQL Server ou a máquina virtual.

Por padrão, as VMs do Azure com SQL Server 2016 ou posterior são registradas automaticamente com a extensão do Agente de IaaS do SQL quando detectadas pelo serviço do Programa de Aperfeiçoamento da Experiência do Usuário. Você pode usar o registro em massa para registrar todas as VMs do SQL Server que não são detectadas pelo serviço CEIP.

Para obter informações sobre privacidade, confira as declarações de privacidade da extensão do Agente de IaaS do SQL.

Pré-requisitos

Para registrar a sua VM do SQL Server na extensão, você precisará de:

  • Uma assinatura do Azure que foi registrada no provedor de recursos Microsoft.SqlVirtualMachine e que contenha máquinas virtuais não registradas do SQL Server.
  • Certifique-se de que a VM do Azure esteja sendo executada.
  • As credenciais de cliente usadas para registrar as máquinas virtuais existentes em qualquer uma das seguintes funções do Azure: Colaborador de máquina virtual, Colaborador ou Proprietário.
  • Az PowerShell 5.0 – versões superiores à 5.0 atualmente só dão suporte à MFA e não são compatíveis com o script para registrar várias VMs.

Introdução

Antes de continuar, primeiro você deve criar uma cópia local do script, importá-la como um módulo do PowerShell e conectá-la ao Azure.

Criar o script

Para criar o script, copie o script completo no fim deste artigo e salve-o localmente como RegisterSqlVMs.psm1.

Importar o script

Depois de criar o script, você poderá importá-lo como um módulo no terminal do PowerShell.

Abra um terminal administrativo do PowerShell e acesse o local em que o arquivo RegisterSqlVMs.psm1 foi salvo. Execute o seguinte cmdlet do PowerShell para importar o script como um módulo:

Import-Module .\RegisterSqlVMs.psm1

Conectar-se ao Azure

Use o seguinte cmdlet do PowerShell para se conectar ao Azure:

Connect-AzAccount

Todas as VMs em uma lista de assinaturas

Use o seguinte cmdlet para registrar todas as máquinas virtuais do SQL Server em uma lista de assinaturas:

Register-SqlVMs -SubscriptionList SubscriptionId1,SubscriptionId2

Saída de exemplo:

Number of subscriptions registration failed for 
because you do not have access or credentials are wrong: 1
Total VMs Found: 10
VMs Already registered: 1
Number of VMs registered successfully: 4
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 3
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Todas as VMs em uma assinatura única

Use o seguinte cmdlet para registrar todas as máquinas virtuais do SQL Server em uma assinatura única:

Register-SqlVMs -Subscription SubscriptionId1

Saída de exemplo:

Total VMs Found: 10
VMs Already registered: 1
Number of VMs registered successfully: 5
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the  guest agent on VM is not running: 2
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Todas as VMs em vários grupos de recursos

Use o seguinte cmdlet para registrar todas as máquinas virtuais do SQL Server em vários grupos de recursos em uma assinatura única:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupList ResourceGroup1,ResourceGroup2

Saída de exemplo:

Total VMs Found: 4
VMs Already registered: 1
Number of VMs registered successfully: 1
Number of VMs failed to register due to error: 1
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Todas as VMs em um grupo de recursos

Use o seguinte cmdlet para registrar todas as máquinas virtuais do SQL Server em um grupo de recursos único:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1

Saída de exemplo:

Total VMs Found: 4
VMs Already registered: 1
Number of VMs registered successfully: 1
Number of VMs failed to register due to error: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

VMs específicas em um grupo de recursos único

Use o seguinte cmdlet para registrar máquinas virtuais do SQL Server específicas em um grupo de recursos único:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1 -VmList VM1,VM2,VM3

Saída de exemplo:

Total VMs Found: 3
VMs Already registered: 0
Number of VMs registered successfully: 1
Number of VMs skipped as VM or the guest agent on VM is not running: 1
Number of VMs skipped as they are not running SQL Server On Windows: 1

Please find the detailed report in file RegisterSqlVMScriptReport1571314821.txt
Please find the error details in file VMsNotRegisteredDueToError1571314821.log

Uma VM específica

Use o seguinte cmdlet para registrar uma máquina virtual do SQL Server específica:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1 -Name VM1

Saída de exemplo:

Total VMs Found: 1
VMs Already registered: 0
Number of VMs registered successfully: 1

Please find the detailed report in  file RegisterSqlVMScriptReport1571314821.txt

Descrição da saída

Um relatório e um arquivo de log são gerados sempre que o cmdlet Register-SqlVMs é usado.

Relatório

O relatório é gerado como um arquivo .txt chamado RegisterSqlVMScriptReport<Timestamp>.txt, em que o carimbo de data/hora é o horário em que o cmdlet foi iniciado. O relatório lista os seguintes detalhes:

Valor de saída Descrição
Ocorreu falha no registro do número de assinaturas porque você não tem acesso ou as credenciais estão incorretas Isso fornece o número e a lista de assinaturas que tiveram problemas com a autenticação fornecida. O erro detalhado pode ser encontrado no log ao pesquisar pela ID da assinatura.
Número de assinaturas que não puderam ser testadas, pois não estavam registradas no provedor de recursos Esta seção aborda a contagem e a lista de assinaturas que não foram registradas na extensão do agente IaaS do SQL.
Total de VMs encontradas A contagem de máquinas virtuais encontradas no escopo dos parâmetros passados para o cmdlet.
VMs já registradas A contagem de máquinas virtuais que foram ignoradas porque já estavam registradas na extensão.
Número de VMs registradas com êxito A contagem de máquinas virtuais que foram registradas com êxito após a execução do cmdlet. Lista as máquinas virtuais registradas no formato SubscriptionID, Resource Group, Virtual Machine.
Número de VMs com falha ao registrar devido a um erro Contagem de máquinas virtuais com falha ao registrar devido a algum erro. Os detalhes do erro podem ser encontrados no arquivo de log.
Número de VMs ignoradas porque a VM ou o agente convidado na VM não estava em execução A contagem e a lista de máquinas virtuais que não puderam ser registradas porque a máquina virtual ou o agente convidado na máquina virtual não estava em execução. Será possível tentar novamente depois de iniciar a máquina virtual ou o agente convidado. Os detalhes podem ser encontrados no arquivo de log.
Número de VMs ignoradas porque não estavam executando o SQL Server no Windows Contagem de máquinas virtuais que foram ignoradas porque não estavam executando o SQL Server ou não eram máquinas virtuais do Windows. As máquinas virtuais são listadas no formato SubscriptionID, Resource Group, Virtual Machine.

Log

Os erros são registrados no arquivo de log chamado VMsNotRegisteredDueToError<Timestamp>.log, em que o carimbo de data/hora é a hora em que o script foi iniciado. Se o erro ocorrer em nível de assinatura, o log conterá a ID da assinatura e a mensagem de erro separadas por vírgulas. Se o erro ocorrer no registro da máquina virtual, o log conterá a ID da assinatura, o nome do grupo de recursos, o nome da máquina virtual, o código de erro e a mensagem separados por vírgulas.

Comentários

Ao registrar as VMs do SQL Server na extensão usando o script fornecido, considere o seguinte:

  • O registro com o provedor de recursos requer um agente convidado em execução na VM do SQL Server. As imagens do Windows Server 2008 não têm um agente convidado, portanto, essas máquinas virtuais falharão e deverão ser registradas manualmente com funcionalidade limitada.
  • Há uma lógica de repetição interna para solucionar erros transparentes. Se a máquina virtual for registrada com êxito, a operação será rápida. No entanto, em caso de falha do registro, cada máquina virtual será testada novamente. Portanto, o processo de registro requer um tempo significativo para ser concluído, embora o requisito de tempo real dependa do tipo e da quantidade de erros.

Script completo

Para ver o script completo no GitHub, confira Registrar VMs do SQL em massa com o Az PowerShell.

Copie o script completo e salve-o como RegisterSqLVMs.psm1.

Próximas etapas

Para saber mais, leia os seguintes artigos: