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 を拡張機能に登録するには、以下のものが必要になります。
- Microsoft.SqlVirtualMachine リソース プロバイダーに登録されており、未登録の SQL Server 仮想マシンが含まれる Azure サブスクリプション。
- Azure VM が実行されているのを確認します。
- 仮想マシンの登録に使用されるクライアント資格情報は、Azure ロールの仮想マシンの共同作成者、共同作成者、または 所有者のいずれかに存在します。
- Az PowerShell 5.0 - 5.0 より新しいバージョンでは、現在 MFA のみがサポートされており、複数の 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
として保存します。
次のステップ
- SQL IaaS Agent 拡張機能が提供するベネフィットを確認します。
- 1 台の VM を手動で登録します
- サブスクリプション内のすべての VM を自動的に登録します。
- 拡張機能に関する既知の問題のトラブルシューティング。
- SQL IaaS Agent 拡張機能のプライバシー ステートメントを確認します。
- パフォーマンスとセキュリティを最適化するためのベスト プラクティスのチェックリストを確認します。
さらに学習するには、次の記事を参照してください。