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 を手動で登録したりすることができます。

Note

2022 年 10 月より後に Azure Marketplace からデプロイされた SQL Server VM では、最小特権モデルが既定で有効になります。 SQL IaaS Agent 拡張機能の管理モードは、2023 年 3 月に廃止されました。

概要

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

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

既定では、SQL Server 2016 以降が存在する Azure VM は、CEIP サービスによって検出されると、SQL IaaS Agent 拡張機能に自動的に登録されます。 CEIP サービスによって検出されない SQL Server VM は、一括登録を使って登録できます。

プライバシーについては、SQL IaaS Agent 拡張機能のプライバシー ステートメントに関する記事をご覧ください。

前提条件

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 のイメージにはゲスト エージェントがないため、これらの仮想マシンは失敗するので、制限された機能手動登録する必要があります。
  • 透過的なエラーを解決するための再試行ロジックが組み込まれています。 仮想マシンが正常に登録されていれば、短時間の処理になります。 ただし、登録が失敗した場合は、各仮想マシンで再試行されます。 実際の所要時間は、エラーの種類と数によって異なりますが、登録プロセスが完了するまでの時間は十分に確保するようにしてください。

完全なスクリプト

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

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

次のステップ

さらに学習するには、次の記事を参照してください。