次の方法で共有


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_idint で、必須です。 NULL の可能性があります。

[ @oldest_date = ] 'oldest_date'

ポリシー実行履歴を保持する最も古い日付。 この日付より前の実行履歴は削除されます。 @oldest_datedatetime で、必須です。 NULL の可能性があります。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

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

@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の日付を指定します。

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

アクセス許可

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

重要

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

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

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