胡 淑鳳
SQL Developer Support
SQL Server 2014環境では、メンテナンスプランの構築により作成されたSQL Server エージェント ジョブを実行する場合、システムイベントログに以下のようなエラーメッセージが記録される場合があります。
ログ種類:システム イベントソース:Microsoft-Windows-DistributedCOM イベントID:10016 レベル:エラー ユーザー:S-1-5-80-344959196-2060754871-2302487193-2804545603-1466107430 説明: アプリケーション固有 のアクセス許可の設定では、CLSID {806835AE-FD04-4870-A1E8-D65535358293} および APPID {EE4171E6-C37E-4D04-AF4C-8617BC7D4914} の COM サーバー アプリケーションに対するローカルアクティブ化のアクセス許可を、アプリケーション コンテナー 利用不可 SID (利用不可) で実行中のアドレス LocalHost (LRPC 使用) の ユーザー NT SERVICE\SQLSERVERAGENT SID (S-1-5-80-344959196-2060754871-2302487193-2804545603-1466107430) に与えることはできません。 このセキュリティ アクセス許可は、コンポーネント サービス管理ツールを使って変更できます。 |
原因
当該のエラーは、ユーザー (NT SERVICE\SQLSERVERAGENT) が [ローカルからのアクティ化] というアクセス許可を AppID {EE4171E6-C37E-4D04-AF4C-8617BC7D4914} に対して持っていない場合に記録されます。
影響
上述エラーはメンテナンスプランで SQL Server エージェント ジョブを介した処理を実行している際に記録されるエラーです。処理が成功している場合、影響はありませんが、権限設定の問題でジョブが失敗する場合もあります。ジョブの実行失敗についてはジョブ履歴をご確認ください。
- 参考情報
ジョブ履歴の表示
https://msdn.microsoft.com/ja-JP/library/ms181046(v=sql.120).aspx
対処方法
イベント 10016を対処するには、管理者権限を持っているユーザーで DCOM アプリケーションのレジストリ キーに対するアクセス権限を設定 (A) してから、「コンポーネント サービス管理ツール」 でアクセス権限を設定 (B) します。
以下、SQL Server 2014 の場合を例に手順を記載します。
A. COM アプリケーションのレジストリ キーのアクセス権限の設定
1). 管理者権限を持っているユーザーでサーバーへログインします。
2). Windows Server 2008/R2 の場合は [スタート] ボタンから [ファイル名を指定して実行] をクリックします。(Windows Server 2012/R2 の場合はデスクトップにて、Windows ロゴ キーを押しながら R キーを押して、[ファイル名を指定して実行] ダイアログ ボックスを開きます。) regedit と入力し、 [OK] をクリックし、レジストリエディターを表示します。次のレジストリ キーを探します。
HKEY_CLASSES_ROOT\AppID\{EE4171E6-C37E-4D04-AF4C-8617BC7D4914}
3). 上記レジストリ キーの [編集] メニューの [アクセス許可] をクリックし、該当するレジストリキーのアクセス許可設定画面を表示します。
4). [セキュリティ] タブで [詳細設定] ボタンをクリックし、 [{EE4171E6-C37E-4D04-AF4C-8617BC7D4914} のセキュリティの詳細設定] 画面を表示します。
5). [所有者] の [変更] をクリックし、場所をクリック後、一覧の一番上のマシン名を選択し、 [選択するオブジェクト名を入力してください] の項目に Administrators を入力し、 [OK] をクリックします。
6).その後表示された画面にて [サブコンテナーとオブジェクトの所有者を置き換える] をチェックし、 [OK] ボタンをクリックします。
7). [グループ名またはユーザー名] ボックスで、 [Administrators] グループをクリックし、レジストリ キーの [フル コントロール] の [許可] チェックボックスをクリックします。
B. 「コンポーネント サービス管理ツール」にてアクセス権限の設定
1). Windows Server 2008/R2 の場合は [スタート] ボタンから [ファイル名を指定して実行] をクリックします。(Windows Server 2012/R2 の場合はデスクトップにて、Windows ロゴ キーを押しながら R キーを押して、[ファイル名を指定して実行] ダイアログ ボックスを開きます。) dcomcnfg と入力し、 [OK] をクリックします。
2). 起動した [コンポーネント サービス] スナップインのツリービューで [コンポーネント サービス]-[コンピューター]-[マイコンピューター]-[DCOM の構成] を順番にクリックし展開します。
3). アプリケーション ID {EE4171E6-C37E-4D04-AF4C-8617BC7D4914} の右クリックメニューの [プロパティ] をクリックします。
4). 表示した画面の [セキュリティ] タブにて、 [起動とアクティブアクセス許可] の [編集] ボタンをクリックします。
5). [NT SERVICE\SQLSERVERAGENT] ユーザーを追加し、 [ローカルからの起動] と [ローカルからのアクティブ化] の [許可] チェックボックスをチェックし、 [OK] をクリックします。
発生契機に関して
SQL Server サービスパック (SP) や累積更新プログラム (CU) 適用を契機として発生する可能性があります。このため、ID 10016のエラーが記録されないようレジストリ値の対処を実施した後でも、今後 SQL Server の SP や CU 適用により、再度 ID 10016のエラーが記録される可能性がありますので、この点ご留意ください。 その場合は、再度同様の手順の実行で対処が可能です。
以上となります。参考になりましたら幸いです。