Azure の複数の SQL VM を SQL IaaS Agent 拡張機能に登録する

適用対象: Azure VM 上の SQL Server

この記事では、Azure 内のご自分の SQL Server 仮想マシン (VM) を、Register-SqlVMs Azure PowerShell コマンドレットを使用して、SQL IaaS Agent 拡張機能に一括登録する方法について説明します。

この記事では、SQL Server VM を手動で一括登録する方法について説明します。 また、すべての SQL Server VM を自動的に登録したり、個々の SQL Server VM を手動で登録したりすることができます。

Note

2022 年 10 月に、SQL Server IaaS Agent 拡張機能に最小特権モデルが導入されました。 この日以降に Azure Marketplace からデプロイされた SQL Server VM では、既定で最小特権モデルが有効になります。 詳しくは、SQL IaaS 拡張機能のアクセス許可に関する記事をご覧ください

概要

Register-SqlVMs コマンドレットを使用すると、指定のサブスクリプションの一覧、リソース グループ、特定の仮想マシンの一覧にあるすべての仮想マシンを登録できます。 このコマンドレットが、仮想マシンをライトウェイト管理モードで登録し、レポートとログ ファイルの両方を生成します。

登録プロセスにはリスクがなく、ダウンタイムは発生せず、SQL Server サービスも仮想マシンも再起動されません。

既定では、SQL Server 2016 以降がインストールされている Azure VM は、CEIP サービスによって検出されると自動的に SQL IaaS Agent 拡張機能に登録されます。 詳細については、「SQL Server のプライバシーの補足情報」を参照してください。

前提条件

SQL Server VM を拡張機能に登録するには、以下のものが必要になります。

はじめに

先に進む前に、スクリプトのローカル コピーを作成し、それを PowerShell モジュールとしてインポートして、Azure に接続する必要があります。

スクリプトを作成します。

スクリプトを作成するには、この記事の最後にある完全なスクリプトをコピーし、RegisterSqlVMs.psm1 としてローカルに保存します。

スクリプトをインポートする

スクリプトを作成したら、PowerShell ターミナルでモジュールとしてインポートできます。

管理者権限で PowerShell ターミナルを開き、RegisterSqlVMs.psm1 ファイルを保存した場所に移動します。 その後、次の PowerShell コマンドレットを実行して、スクリプトをモジュールとしてインポートします。

Import-Module .\RegisterSqlVMs.psm1

Azure に接続する

次の PowerShell コマンドレットを使用して Azure に接続します。

Connect-AzAccount

サブスクリプションの一覧にあるすべての VM

次のコマンドレットを使用して、サブスクリプションの一覧にあるすべての 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

単一のサブスクリプションにあるすべての VM

次のコマンドレットを使用して、単一のサブスクリプションにあるすべての 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

複数のリソース グループにあるすべての VM

次のコマンドレットを使用して、単一のサブスクリプション内の複数のリソース グループにあるすべての 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

リソース グループにあるすべての VM

次のコマンドレットを使用して、すべての 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

単一のリソース グループにある特定の VM

次のコマンドレットを使用して、単一のリソース グループ内の特定の 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

特定の VM

次のコマンドレットを使用して、特定の 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 コマンドレットが使用されるたびに、レポートとログ ファイルの両方が生成されます。

レポート

レポートは RegisterSqlVMScriptReport<Timestamp>.txt という名前の .txt ファイルとして生成されます。タイムスタンプはコマンドレットが開始された時刻になります。 レポートには次の詳細が一覧表示されます。

出力値 説明
アクセスできないか、資格情報が正しくないため、登録できなかったサブスクリプションの数 これには、指定した認証で問題が発生したサブスクリプションの数とその一覧が表示されます。 エラーの詳細は、サブスクリプション ID でログを検索すると見つかります。
リソース プロバイダーに登録されていないために試行できなかったサブスクリプションの数 このセクションには、SQL IaaS Agent 拡張機能に登録されていないサブスクリプションの数とその一覧が含まれています。
見つかった VM の総数 コマンドレットに渡されたパラメーターのスコープで見つかった仮想マシンの数。
既に登録されている VM 拡張機能に既に登録されているためスキップされた仮想マシンの数。
正常に登録された VM の数 コマンドレットの実行後に正常に登録された仮想マシンの数。 登録された仮想マシンを SubscriptionID, Resource Group, Virtual Machine の形式で一覧表示します。
エラーにより登録に失敗した VM の数 何らかのエラーが原因で登録に失敗した仮想マシンの数。 エラーの詳細は、ログ ファイルで確認できます。
VM または VM のゲスト エージェントが実行されていないためスキップされた VM の数 仮想マシンまたは仮想マシンのゲスト エージェントが実行されていなかったため登録できなかった仮想マシンの数とその一覧。 これらは、仮想マシンまたはゲスト エージェントが開始された後に再試行できます。 詳細は、ログ ファイルで確認できます。
Windows 上で SQL Server を実行していないためスキップされた VM の数 SQL Server を実行していないか、Windows 仮想マシンではないためにスキップされた仮想マシンの数。 仮想マシンは SubscriptionID, Resource Group, Virtual Machine の形式で一覧表示されます。

ログ

エラーは VMsNotRegisteredDueToError<Timestamp>.log という名前のログ ファイルに記録されます。タイムスタンプはスクリプトが開始された時刻になります。 このエラーがサブスクリプション レベルで発生した場合、ログにはコンマで区切られたサブスクリプション ID とエラー メッセージが含まれます。 仮想マシンの登録でエラーが発生した場合、ログにはコンマで区切られたサブスクリプション ID、リソース グループ名、仮想マシン名、エラー コード、メッセージが含まれます。

解説

指定のスクリプトを使用して SQL Server VM を拡張機能に登録するときは、次の点を考慮してください。

  • 拡張機能に登録するには、SQL Server VM でゲスト エージェントが実行されている必要があります。 Windows Server 2008 のイメージにはゲスト エージェントがないため、これらの仮想マシンは失敗します。そのため、NoAgent 管理モードを使用して手動で登録する必要があります。
  • 透過的なエラーを解決するための再試行ロジックが組み込まれています。 仮想マシンが正常に登録されていれば、短時間の処理になります。 ただし、登録が失敗した場合は、各仮想マシンで再試行されます。 実際の所要時間は、エラーの種類と数によって異なりますが、登録プロセスが完了するまでの時間は十分に確保するようにしてください。

完全なスクリプト

完全なスクリプトについては、Az PowerShell を使用した SQL Server VM の一括登録に関する GitHub のページを参照してください。

完全なスクリプトをコピーし、RegisterSqLVMs.psm1 として保存します。

次のステップ

拡張機能に関する既知の問題のトラブルシューティング

詳細については、次の記事を参照してください。