1

Microsoft SQL データベースの保守計画が失敗した、実行されなかった、実装されていない、またはスケジュールされていなかった場合に、ユーザーがアプリケーションにログインしたときにアラートを追加しています。チェックすべき保守計画を特定するための設定を追加したくありません。

現在のデータベース " " でアクションを実行するメンテナンス プランのリストを取得するにはどうすればよいSELECT db_name()ですか?

ここですべてのメンテナンス プランのリストを確認できます。SELECT * FROM msdb.dbo.sysmaintplan_plans

計画の手順を照会し、データベースが含まれているかどうかを確認する必要があると思います。

各ステップのタイプ、つまり整合性チェック、インデックスの再構築、統計の更新またはバックアップなどを識別できると便利です。そうすれば、必要なすべてのステップが実行されていることを確認できます。

4

1 に答える 1

1

SQL プロファイラーを使用して、いくつかのクエリを収集し、現在のデータベースを含むメンテナンス プランのログ履歴を表示する単一の SQL をまとめました。各ステップと成功したかどうかを示します。

SELECT
    ld.server_name,
    mp.name AS [MTX Plan Name],
    msp.subplan_name AS [Sub Plan Name],    
    mpl.start_time AS [JobStart],
    mpl.end_time AS [JobEnd],
    mpl.succeeded AS [JobSucceeded],
    ld.start_time AS [StepStart],
    ld.end_time AS [StepEnd],
    ld.succeeded  AS [StepSucceeded],
    ld.line1,
    ld.line2,
    ld.line3,
    ld.line4,
    ld.line5,
    ld.command
FROM
    msdb.dbo.sysmaintplan_plans mp
    INNER JOIN msdb.dbo.sysmaintplan_subplans msp ON mp.id = msp.plan_id
    INNER JOIN msdb.dbo.sysmaintplan_log mpl ON msp.subplan_id = mpl.subplan_id
    INNER JOIN msdb.dbo.sysmaintplan_logdetail ld ON mpl.task_detail_id = ld.task_detail_id
        AND ld.command LIKE ('%['+db_name()+']%')
ORDER BY
    mpl.start_time DESC

これは、ウィザードによって生成されたメンテナンス プランで最適に機能します。アドホック プランには、フィルタリング用のコマンド列が常に含まれているわけではありません。ただし、テーブルのリンクは引き続き機能します。

于 2015-11-23T15:44:38.520 に答える