Регистрация нескольких виртуальных машин SQL в Azure с помощью расширения агента IaaS для SQL

Применимо к:SQL Server на виртуальной машине Azure

В этой статье показано, как выполнить массовую регистрацию виртуальных машин SQL Server в Azure с помощью расширения агента IaaS для SQL и командлета Azure PowerShell Register-SqlVMs.

Кроме того, можно зарегистрировать все виртуальные машины SQL Server автоматически или отдельные виртуальные машины SQL Server вручную.

Примечание.

Виртуальные машины SQL Server, развернутые через Azure Marketplace после октября 2022 года, по умолчанию включают наименьшую привилегированную модель . Режимы управления для расширения агента IaaS SQL были удалены в марте 2023 года.

Обзор

Командлет Register-SqlVMs можно использовать для регистрации всех виртуальных машин в заданном списке подписок, групп ресурсов или в списке конкретных виртуальных машин. Командлет зарегистрирует виртуальные машины, а затем создает отчет и файл журнала.

Процесс регистрации не влечет никаких рисков или простоев, и не потребует перезагрузки службы SQL Server или виртуальной машины.

По умолчанию виртуальные машины Azure с SQL Server 2016 или более поздней версии автоматически регистрируются в расширении агента IaaS SQL при обнаружении службой CEIP. Для регистрации виртуальных машин SQL Server, не обнаруженных службой CEIP, можно использовать массовую регистрацию.

Сведения о конфиденциальности см. в заявлениях о конфиденциальности расширения агента IaaS SQL.

Необходимые компоненты

Для регистрации виртуальной машины SQL Server с расширением потребуется следующее:

  • Подписка Azure, которая зарегистрирована в поставщике ресурсов Microsoft.SqlVirtualMachine и содержит незарегистрированные виртуальные машины SQL Server.
  • Убедитесь, что виртуальная машина Azure запущена.
  • Для учетных данных клиента, используемых при регистрации виртуальных машин, назначена одна из следующих ролей Azure: Участник виртуальных машин, Участник или Владелец.
  • Az PowerShell 5.0 — версии выше 5.0 в настоящее время поддерживают только MFA и несовместимы с скриптом для регистрации нескольких виртуальных машин.

Начать

Прежде чем продолжить, необходимо создать локальную копию скрипта, импортировать ее в качестве модуля PowerShell и подключиться к Azure.

Создание скрипта

Чтобы создать скрипт, скопируйте полный скрипт в конце этой статьи и сохраните его локально как RegisterSqlVMs.psm1.

Импорт скрипта

После создания скрипта его можно импортировать как модуль в терминал PowerShell.

Откройте административный терминал PowerShell и перейдите к сохраненному файлу RegisterSqlVMs.psm1. Чтобы импортировать скрипт как модуль, выполните следующий командлет PowerShell:

Import-Module .\RegisterSqlVMs.psm1

Подключение к Azure

Для подключения к Azure используйте следующий командлет PowerShell:

Connect-AzAccount

Все виртуальные машины в списке подписок

Используйте следующий командлет, чтобы зарегистрировать все виртуальные машины SQL Server в списке подписок:

Register-SqlVMs -SubscriptionList SubscriptionId1,SubscriptionId2

Пример результата:

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

Все виртуальные машины в одной подписке

Используйте следующий командлет, чтобы зарегистрировать все виртуальные машины SQL Server в одной подписке:

Register-SqlVMs -Subscription SubscriptionId1

Пример результата:

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

Все виртуальные машины в нескольких группах ресурсов

Используйте следующий командлет, чтобы зарегистрировать все виртуальные машины SQL Server в нескольких группах ресурсов в пределах одной подписки:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupList ResourceGroup1,ResourceGroup2

Пример результата:

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

Все виртуальные машины в группе ресурсов

Используйте следующий командлет, чтобы зарегистрировать все виртуальные машины SQL Server в одной группе ресурсов:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1

Пример результата:

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

Конкретные виртуальные машины в одной группе ресурсов

Используйте следующий командлет, чтобы зарегистрировать конкретные виртуальные машины SQL Server в одной группе ресурсов:

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

Пример результата:

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

Конкретная виртуальная машина

Используйте следующий командлет, чтобы зарегистрировать конкретные виртуальные машины SQL Server:

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

Пример результата:

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

Please find the detailed report in  file RegisterSqlVMScriptReport1571314821.txt

Описание выходных данных

Отчет и файл журнала создаются каждый раз при использовании командлета Register-SqlVMs.

Отчет

Отчет создается как файл .txt с именем RegisterSqlVMScriptReport<Timestamp>.txt, в котором время начала выполнения командлета используется в качестве метки времени. В отчете перечислены следующие сведения:

Выходное значение Description
Количество подписок, которые не удалось зарегистрировать, так как у вас нет доступа или учетные данные неверны Предоставляет число и список подписок, в которых возникли проблемы с указанной проверкой подлинности. Подробные сведения об ошибке можно найти в журнале, выполнив поиск по идентификатору подписки.
Количество подписок, которые не удалось опробовать, так как они не зарегистрированы в поставщике ресурсов В этом разделе содержится количество и список подписок, которые не были зарегистрированы в расширении агента IaaS для SQL.
Общее число найденных виртуальных машин Число виртуальных машин, обнаруженных в области параметров, переданных в командлет.
Количество уже зарегистрированных виртуальных машин Количество виртуальных машин, которые были пропущены, так как они уже зарегистрированы в расширении.
Количество успешно зарегистрированных виртуальных машин Количество виртуальных машин, успешно зарегистрированных после выполнения командлета. Список зарегистрированных виртуальных машин в формате SubscriptionID, Resource Group, Virtual Machine.
Количество виртуальных машин, которые не удалось зарегистрировать из-за ошибки Количество виртуальных машин, которые не удалось зарегистрировать из-за ошибки. Подробные сведения об ошибке можно найти в файле журнала.
Количество виртуальных машин, пропущенных из-за того, что не запущена виртуальная машина или расположенный на ней гостевой агент Количество и список виртуальных машин, которые не удалось зарегистрировать, так как не запущена виртуальная машина или расположенный на ней гостевой агент. Регистрацию можно повторить после запуска виртуальной машины или гостевого агента. Дополнительные сведения см. в файле журнала.
Количество пропущенных виртуальных машин, на которых не запущен SQL Server в Windows Количество виртуальных машин, которые были пропущены, так как на них не запущен SQL Server или они не являются виртуальными машинами Windows. Виртуальные машины перечислены в формате SubscriptionID, Resource Group, Virtual Machine.

Журнал

Ошибки записываются в файл журнала с именем VMsNotRegisteredDueToError<Timestamp>.log, в котором время запуска скрипта используется в качестве метки времени. Если ошибка возникла на уровне подписки, в журнале содержится идентификатор подписки и сообщение об ошибке (с разделителями-запятыми). Если ошибка связана с регистрацией виртуальной машины, в журнале содержится идентификатор подписки, имя группы ресурсов, имя виртуальной машины, код ошибки и сообщение, разделяемые запятыми.

Замечания

При регистрации виртуальных машин SQL Server с помощью расширения с использованием предоставленного скрипта учитывайте следующее:

  • Для выполнения регистрации с помощью расширения требуется гостевой агент, работающий на виртуальной машине SQL Server. Образы Windows Server 2008 не имеют гостевого агента, поэтому эти виртуальные машины завершаются ошибкой и должны быть зарегистрированы вручную с ограниченными возможностями.
  • Существует встроенная логика повторных попыток для устранения прозрачных ошибок. Если виртуальная машина успешно зарегистрирована, эта операция выполняется быстро. Однако в случае сбоя регистрации каждая виртуальная машина будет выполнена повторно. Таким образом, для завершения процесса регистрации необходимо значительное время, хотя требования к фактическому времени зависят от типа и количества ошибок.

Полный сценарий

Полный скрипт см. на сайте GitHub в разделе о массовой регистрации виртуальных машин SQL Server с помощью модуля Az PowerShell.

Скопируйте полный скрипт и сохраните его как файл RegisterSqLVMs.psm1.

Следующие шаги

Дополнительные сведения см. в следующих статьях: