ARM の仮想マシンに SQL Server IaaS Agent を導入してみる
SQL Server IaaS Agent の Key Vault 統合について
で紹介した、SQL Server IaaS Agent (IaaS 拡張機能) ですが、少しはまったところ等がありますので、基本的な仕組みをざっくりまとめてみたいと思います。
SQL Server IaaS Agentですが、現状の SQL Server インストール済みのイメージであれば、導入された状態で展開が行われます。
SQL Server インストール済みのイメージでは、拡張機能の名前が「SqlIaasExtension」としてインストールされています。
拡張機能がインストールされていない環境では、
Set-AzureRmVMSqlServerExtension -ResourceGroupName $vm.ResourceGroupName -VMName $VM.Name -Location japanwest -Version 1.2
のようなコマンドレットで、インストールをすることができますが「Name」を指定しないでインストールした場合は、インストール後の拡張機能の名前は「Microsoft.SqlServer.Management.SqlIaaSAgent」(拡張機能名と同じ) でインストールされます。
「Set-AzureRMVMSqlServerExtension」は「Name」を省略した場合、自動的に「Microsoft.SqlServer.Management.SqlIaaSAgent」を Name として使用されますが、それ以外の名前でインストールをしている場合は、Name オプションで指定する必要があります。
SQL Server インストール済みイメージでインストールされた拡張機能の設定を変更する場合は、以下のように Name を指定します。
Set-AzureRmVMSqlServerExtension -Name "SQLIaasExtension"
IaaS Agent ですが、
- Windows サービス
が根幹のサービスとなっています。
サービスについては、「Microsoft SQL Server IaaS Agent」(SQLIaaSExtension) として、「C:\Program Files\Microsoft SQL Server IaaS Agent」にインストールされます。
このサービスが、OS / SQL Server と連携されて、Agent の各種機能を動作させています。
拡張機能自体は「C:\Packages\Plugins\Microsoft.SqlServer.Management.SqlIaaSAgent」にインストールされているのですが、ここに配置されているのは、サービスをインストールするためのファイル群でしたり、設定のベースとなるファイルとなるため、機能を動作させるためには、このサービスが動作している必要があります。
また、このサービスは SQL Server と連携が行われるため、「NT Service\SQLIaaSExtension」が SQL Server の Sysadmin の権限を付与している必要がありますので、再インストールする場合などは、気を付けておく必要があります。
SQL Server を再インストールし、サービスからアクセスができた場合、既存の設定の移行は行われていないような、動作となっているようでしたので、設定は再設定した方がよさそうでした。
また、SQL Server IaaS Agent をインストールする際には、インストール時に一時的にシングルユーザーモードで起動しているようでしたので、拡張機能インストール時には、サービスが一時的に停止されることも気を付けておいたほうが良いかと。
IaaS Agent については、イベントビューアーのアプリケーションにログを出力していますので、以下のソースでイベントログを確認してもよいかもしれないですね。