ポリシー ベースの管理ポリシーのトラブルシューティング
ポリシー ベースの管理では、エラーが Windows イベント ログに記録され、スケジュールされたポリシーの場合は SQL Server エージェント ログにも記録されます。ポリシーが有効になっていない場合や、期待された目標を達成しない場合、その問題はエラーとは見なされず、ログにも記録されません。
ポリシー エラーのトラブルシューティング
ここでは、2 つのポリシー エラーとそのトラブルシューティングの手順について説明します。
"変更時: ログ" ポリシーまたは "変更時: 回避" ポリシーが実行されていない
[変更時: ログ] または [変更時: 回避] 評価モードを使用しているポリシーは、次のいずれかの理由で効力がありません。
ポリシーが無効になっている。
フィルタによって対象が除外されている。
ポリシーを含んでいるポリシー グループを対象がサブスクライブしていない。
[変更時: 回避] 評価モードで、Service Broker イベント メカニズムが正しいイベントを監視していない。
評価エンジンでエラーが発生している。
この問題のトラブルシューティングを行うには、次の手順を実行します。
ポリシーが実行されたかどうかを確認します (このデータはログ ビューアでも表示できます)。
ポリシー実行時に例外メッセージが表示されたかどうかを確認するには、msdb.dbo.syspolicy_policy_execution_history ビューでポリシー実行履歴を確認します。
ポリシーが特定の対象に対して実行されたかどうかを確認するには、msdb.dbo.syspolicy_policy_execution_history_details ビューで該当する対象のポリシー実行履歴を確認します。
該当する対象に対してポリシーに効力があるかどうかを確認します。
ポリシーが有効になっていることを確認します。
ポリシーが対象に適用されていることを確認するには、SQL Server Management Studio の [ポリシーの表示] ページを使用します。
[変更時: 回避] 評価モードを使用しているポリシーの場合は、イベント メカニズムが正しいイベントを監視しているかどうかが Service Broker によって確認されます。
トランザクションがコミットされ、ポリシーの条件が定義されているファセットでサポートされるイベントが生成されたことを確認します。
次のクエリを使用して、Service Broker キューで正しいイベントが監視されていることを確認します。
SELECT * FROM sys.server_event_notifications WHERE name = N'syspolicy_event_notification' ; GO SELECT * FROM sys.server_event_notifications WHERE name = N'syspolicy_event_notification' ; GO
評価エンジンを確認します。
- ポリシー ベースの管理でエラーが発生していないかを Windows イベント ログで確認します。
"スケジュールで実行" ポリシーが実行されていない
"スケジュールで実行" ポリシーは、"変更時: ログ" ポリシーや "変更時: 回避" ポリシーと同じ理由でエラーとなる可能性があります。また、SQL Server エージェント ジョブでエラーが発生したためにエラーとなることもあります。ジョブの詳細については、「ジョブの表示と変更」を参照してください。
パフォーマンス問題のトラブルシューティング
ポリシー ベースの管理には、パフォーマンスに関連する問題を診断するための特定のツールは用意されていません。ポリシーの実行時間を確認するには、msdb.dbo.syspolicy_policy_execution_history ビューの start_date 列と end_date 列に対してクエリを実行します。
エラー処理とログ記録について
ここでは、一部のポリシーのエラー処理とログ記録のしくみについて説明します。
"変更時: ログ" ポリシーと "変更時: 回避" ポリシー
ポリシー実行エラーは、Windows イベント ログに記録されます。ログには、ポリシー ベースの管理のエラー テキストと、SQL Server イベントの詳細を示す XML 記述が記録されます。メインの実行ロジックでの例外とポリシー実行エラーは、msdb.dbo.syspolicy_policy_execution_history ビューおよび msdb.dbo.syspolicy_policy_execution_history_details ビューに表示されます。
"スケジュールで実行" ポリシー
"スケジュールで実行" ポリシーには SQL Server エージェントが関係するため、まずエージェント ログ ファイルを調べます。ジョブが正常に完了したかどうかを確認します。SQL Server エージェント ログには、ストアド プロシージャ呼び出しのエラーが記録されます。ジョブが正常に完了している場合は、Windows イベント ログでポリシー実行エラーを調べます。