sp_syspolicy_delete_policy_execution_history (Transact-SQL)

適用対象:SQL Server

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

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;

一方または両方の値に NULL を指定すると、次の動作が適用されます。

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

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

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

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

アクセス許可

Policy管理istratorRole 固定データベース ロールのメンバーシップ必要です。

重要

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

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

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