次の方法で共有


sp_syspolicy_delete_policy_execution_history (Transact-SQL)

ポリシー ベースの管理のポリシーの実行履歴を削除します。このストアド プロシージャを使用して、特定のポリシーまたはすべてのポリシーの実行履歴、および特定の日付までの実行履歴を削除できます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_syspolicy_delete_policy_execution_history [ @policy_id = ] policy_id ]
        [ , [ @oldest_date = ] 'oldest_date' ]

引数

  • [ @policy_id= ] policy_id
    実行履歴を削除するポリシーの識別子を指定します。policy_id のデータ型は int で、必ず指定する必要があります。NULL 値は許可されます。

  • [ @oldest_date= ] 'oldest_date'
    ポリシーの実行履歴を保持する最も古い日付を指定します。この日付よりも前の実行履歴は削除されます。oldest_date のデータ型は datetime で、必ず指定する必要があります。NULL 値は許可されます。

リターン コードの値

成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。

説明

sp_syspolicy_delete_policy_execution_history は msdb システム データベースのコンテキストで実行する必要があります。

policy_id の値を取得し、実行履歴の日付を表示するには、次のクエリを使用します。

SELECT a.name AS N'policy_name', b.policy_id, b.start_date, b.end_date
FROM msdb.dbo.syspolicy_policies AS a 
INNER JOIN msdb.dbo.syspolicy_policy_execution_history AS b
ON a.policy_id = b.policy_id

次の動作は、1 つまたは両方の値に NULL を指定した場合に適用されます。

  • ポリシーの実行履歴をすべて削除するには、policy_id と oldest_date の両方に NULL を指定します。

  • 特定のポリシーの実行履歴をすべて削除するには、policy_id にポリシー ID を指定し、oldest_date に NULL を指定します。

  • 特定の日付より前のすべてのポリシーの実行履歴を削除するには、policy_id に NULL を指定し、oldest_date に特定の日付を指定します。

ポリシーの実行履歴をアーカイブするには、オブジェクト エクスプローラでポリシー履歴ログを開いて、実行履歴をファイルにエクスポートします。ポリシー履歴ログにアクセスするには、[管理] を展開し、[ポリシー管理] を右クリックして、[履歴の表示] をクリックします。

権限

PolicyAdministratorRole 固定データベース ロールのメンバシップが必要です。

セキュリティに関する注意セキュリティに関する注意

資格情報が昇格される可能性について : PolicyAdministratorRole ロールに割り当てられているユーザーは、サーバー トリガを作成して、データベース エンジン インスタンスの動作に影響する可能性があるポリシーの実行をスケジュールできます。たとえば、PolicyAdministratorRole ロールに割り当てられているユーザーは、ほとんどのオブジェクトがデータベース エンジンで作成されないようにすることができるポリシーを作成できます。このように、資格情報が昇格される可能性があるので、PolicyAdministratorRole ロールは、データベース エンジンの構成の制御について信頼できるユーザーにのみ許可してください。

次の例では、ID が 7 のポリシーについて特定の日付より前のポリシーの実行履歴を削除します。

EXEC msdb.dbo.sp_syspolicy_delete_policy_execution_history @policy_id = 7
, @oldest_date = '2009-02-16 16:00:00.000';

GO