Rejestrowanie wielu maszyn wirtualnych SQL na platformie Azure przy użyciu rozszerzenia agenta IaaS SQL

Dotyczy:SQL Server na maszynie wirtualnej platformy Azure

W tym artykule opisano sposób zbiorczego rejestrowania maszyn wirtualnych programu SQL Server na platformie Azure przy użyciu rozszerzenia agenta IaaS sql przy użyciu Register-SqlVMspolecenia cmdlet programu Azure PowerShell.

Alternatywnie można automatycznie zarejestrować wszystkie maszyny wirtualne programu SQL Server lub poszczególne maszyny wirtualne programu SQL Server ręcznie.

Uwaga

Maszyny wirtualne z programem SQL Server wdrożone za pośrednictwem witryny Azure Marketplace po październiku 2022 r. mają domyślnie włączony najmniej uprzywilejowany model . Tryby zarządzania rozszerzenia agenta IaaS sql zostały usunięte w marcu 2023 r.

Omówienie

Polecenie Register-SqlVMs cmdlet może służyć do rejestrowania wszystkich maszyn wirtualnych na danej liście subskrypcji, grup zasobów lub listy określonych maszyn wirtualnych. Polecenie cmdlet zarejestruje maszyny wirtualne, a następnie wygeneruje zarówno raport, jak i plik dziennika.

Proces rejestracji nie wiąże się z żadnym ryzykiem, nie ma przestoju i nie uruchomi ponownie usługi programu SQL Server ani maszyny wirtualnej.

Domyślnie maszyny wirtualne platformy Azure z programem SQL Server 2016 lub nowszym są automatycznie rejestrowane przy użyciu rozszerzenia agenta IaaS SQL po wykryciu przez usługę CEIP. Rejestracja zbiorcza umożliwia rejestrowanie wszystkich maszyn wirtualnych programu SQL Server, które nie są wykrywane przez usługę CEIP.

Aby uzyskać informacje o ochronie prywatności, zobacz oświadczenia o ochronie prywatności rozszerzenia agenta IaaS sql.

Wymagania wstępne

Aby zarejestrować maszynę wirtualną z programem SQL Server przy użyciu rozszerzenia, potrzebne są następujące elementy:

  • Subskrypcja platformy Azure zarejestrowana u dostawcy zasobów Microsoft.SqlVirtualMachine i zawiera niezarejestrowane maszyny wirtualne programu SQL Server.
  • Upewnij się, że maszyna wirtualna platformy Azure jest uruchomiona.
  • Poświadczenia klienta używane do rejestrowania maszyn wirtualnych istnieją w dowolnej z następujących ról platformy Azure: Współautor maszyny wirtualnej, Współautor lub Właściciel.
  • Az PowerShell 5.0 — wersje wyższe niż 5.0 obsługują obecnie tylko uwierzytelnianie wieloskładnikowe i nie są zgodne ze skryptem w celu zarejestrowania wielu maszyn wirtualnych.

Rozpocznij

Przed kontynuowaniem należy najpierw utworzyć lokalną kopię skryptu, zaimportować go jako moduł programu PowerShell i nawiązać połączenie z platformą Azure.

Tworzenie skryptu

Aby utworzyć skrypt, skopiuj pełny skrypt z końca tego artykułu i zapisz go lokalnie jako RegisterSqlVMs.psm1.

Importowanie skryptu

Po utworzeniu skryptu można go zaimportować jako moduł w terminalu programu PowerShell.

Otwórz administracyjny terminal programu PowerShell i przejdź do lokalizacji, w której zapisano RegisterSqlVMs.psm1 plik. Następnie uruchom następujące polecenie cmdlet programu PowerShell, aby zaimportować skrypt jako moduł:

Import-Module .\RegisterSqlVMs.psm1

Łączenie się z platformą Azure

Użyj następującego polecenia cmdlet programu PowerShell, aby nawiązać połączenie z platformą Azure:

Connect-AzAccount

Wszystkie maszyny wirtualne na liście subskrypcji

Użyj następującego polecenia cmdlet, aby zarejestrować wszystkie maszyny wirtualne programu SQL Server na liście subskrypcji:

Register-SqlVMs -SubscriptionList SubscriptionId1,SubscriptionId2

Przykładowe wyjście:

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

Wszystkie maszyny wirtualne w jednej subskrypcji

Użyj następującego polecenia cmdlet, aby zarejestrować wszystkie maszyny wirtualne programu SQL Server w jednej subskrypcji:

Register-SqlVMs -Subscription SubscriptionId1

Przykładowe wyjście:

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

Wszystkie maszyny wirtualne w wielu grupach zasobów

Użyj następującego polecenia cmdlet, aby zarejestrować wszystkie maszyny wirtualne programu SQL Server w wielu grupach zasobów w ramach jednej subskrypcji:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupList ResourceGroup1,ResourceGroup2

Przykładowe wyjście:

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

Wszystkie maszyny wirtualne w grupie zasobów

Użyj następującego polecenia cmdlet, aby zarejestrować wszystkie maszyny wirtualne programu SQL Server w jednej grupie zasobów:

Register-SqlVMs -Subscription SubscriptionId1 -ResourceGroupName ResourceGroup1

Przykładowe wyjście:

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

Określone maszyny wirtualne w jednej grupie zasobów

Użyj następującego polecenia cmdlet, aby zarejestrować określone maszyny wirtualne programu SQL Server w ramach jednej grupy zasobów:

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

Przykładowe wyjście:

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

Określona maszyna wirtualna

Użyj następującego polecenia cmdlet, aby zarejestrować określoną maszynę wirtualną z programem SQL Server:

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

Przykładowe wyjście:

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

Please find the detailed report in  file RegisterSqlVMScriptReport1571314821.txt

Opis danych wyjściowych

Zarówno raport, jak i plik dziennika są generowane za każdym razem, Register-SqlVMs gdy jest używane polecenie cmdlet.

Report

Raport jest generowany jako .txt plik o nazwie RegisterSqlVMScriptReport<Timestamp>.txt , w którym sygnatura czasowa to czas rozpoczęcia polecenia cmdlet. Raport zawiera następujące szczegóły:

Wartość wyjściowa Opis
Liczba rejestracji subskrypcji nie powiodła się, ponieważ nie masz dostępu lub poświadczenia są niepoprawne Zapewnia to liczbę i listę subskrypcji, które miały problemy z podanym uwierzytelnianiem. Szczegółowy błąd można znaleźć w dzienniku, wyszukując identyfikator subskrypcji.
Liczba subskrypcji, których nie można wypróbować, ponieważ nie są one zarejestrowane u dostawcy zasobów Ta sekcja zawiera liczbę i listę subskrypcji, które nie zostały zarejestrowane w rozszerzeniu agenta IaaS sql.
Znaleziono łączną liczbę znalezionych maszyn wirtualnych Liczba maszyn wirtualnych znalezionych w zakresie parametrów przekazanych do polecenia cmdlet.
Maszyny wirtualne zostały już zarejestrowane Liczba maszyn wirtualnych, które zostały pominięte, ponieważ zostały już zarejestrowane w rozszerzeniu.
Liczba zarejestrowanych pomyślnie maszyn wirtualnych Liczba maszyn wirtualnych, które zostały pomyślnie zarejestrowane po uruchomieniu polecenia cmdlet. Wyświetla listę zarejestrowanych maszyn wirtualnych w formacie SubscriptionID, Resource Group, Virtual Machine.
Liczba maszyn wirtualnych nie powiodła się z powodu błędu Liczba maszyn wirtualnych, których nie można zarejestrować z powodu błędu. Szczegóły błędu można znaleźć w pliku dziennika.
Liczba maszyn wirtualnych pominiętych, ponieważ maszyna wirtualna lub agent podmuchu na maszynie wirtualnej nie jest uruchomiony Liczba i lista maszyn wirtualnych, których nie można zarejestrować jako maszyny wirtualnej lub agenta gościa na maszynie wirtualnej nie było uruchomione. Można je ponowić po uruchomieniu maszyny wirtualnej lub agenta gościa. Szczegóły można znaleźć w pliku dziennika.
Liczba pominiętych maszyn wirtualnych, ponieważ nie są uruchomione programu SQL Server w systemie Windows Liczba maszyn wirtualnych, które zostały pominięte, ponieważ nie są uruchomione programu SQL Server lub nie są maszyną wirtualną z systemem Windows. Maszyny wirtualne są wymienione w formacie SubscriptionID, Resource Group, Virtual Machine.

Dziennik

Błędy są rejestrowane w pliku dziennika o nazwie VMsNotRegisteredDueToError<Timestamp>.log, gdzie sygnatura czasowa to czas uruchomienia skryptu. Jeśli błąd znajduje się na poziomie subskrypcji, dziennik zawiera identyfikator subskrypcji rozdzielanej przecinkami i komunikat o błędzie. Jeśli błąd dotyczy rejestracji maszyny wirtualnej, dziennik zawiera identyfikator subskrypcji, nazwę grupy zasobów, nazwę maszyny wirtualnej, kod błędu i komunikat rozdzielony przecinkami.

Uwagi

Podczas rejestrowania maszyn wirtualnych programu SQL Server z rozszerzeniem przy użyciu podanego skryptu należy wziąć pod uwagę następujące kwestie:

  • Rejestracja przy użyciu rozszerzenia wymaga agenta gościa uruchomionego na maszynie wirtualnej z programem SQL Server. Obrazy systemu Windows Server 2008 nie mają agenta gościa, więc te maszyny wirtualne nie będą działać i muszą zostać zarejestrowane ręcznie z ograniczoną funkcjonalnością.
  • Istnieje wbudowana logika ponawiania prób, aby przezwyciężyć przezroczyste błędy. Jeśli maszyna wirtualna została pomyślnie zarejestrowana, jest to szybka operacja. Jeśli jednak rejestracja nie powiedzie się, każda maszyna wirtualna zostanie ponowiona. W związku z tym należy zezwolić na znaczny czas na ukończenie procesu rejestracji — chociaż wymaganie dotyczące czasu rzeczywistego zależy od typu i liczby błędów.

Pełny skrypt

Aby uzyskać pełny skrypt w usłudze GitHub, zobacz Zbiorcze rejestrowanie maszyn wirtualnych programu SQL Server za pomocą modułu Az programu PowerShell.

Skopiuj pełny skrypt i zapisz go jako RegisterSqLVMs.psm1.

Następne kroki

Aby dowiedzieć się więcej, zapoznaj się z następującymi artykułami: