SQL Server メンテナンスプランで、クリーンアップタスクが効かない。

SQL Server Management Studio (SSMS) メンテナンスプランで、クリーンアップタスクが効かない。

いつものSQLバックアップとして、SSMSでメンテナンスプランを作成したのだが、どういうわけか、クリーンアップタスクで、指定した「bak」ファイルの削除が行われない。延々とバックアップファイルが残っていく。勿論、最初にやってしまう「.bak」として、「.」を余計に指定している訳でもない。

テスト実行でも動かない

タスクスケジューラのようにスケジュール上だけで動かないのではなく、「直ぐに実行」を行っても反応が無い。バックアップタスク等は全て切り離し、クリーンアップタスクだけを走らせても駄目。設定自体は何度も行っているので手馴れていた筈。正常に動作しているサーバの設定と比べても何も間違いもない。

クリーンアップタスクはファイルの中身も見ている

因みに、バックアップをその都度取ってからクリーンアップタスクを走らせるのが面倒なので、テキストファイルの拡張子をbakに変更して間に合わせでテストしていたら、正常に動作していたサーバでもそのファイルだけ消えなくなった。実はこのクリーンアップタスクは、単に拡張子を見ているだけではなく、中身がバックアップファイルかどうかも見ているらしい。なので、削除対象のファイルとしてもバックアップファイルでなければ無視される事になる。今回この件とは関係はないのだが、期待せずして新たな発見があった。

原因は権限不足

この現象の原因は、システムの権限不足だった。

SSMS上データベースのセキュリティ → ログイン → NT AUTHORITY\SYSTEM → サーバロールで、sysadmin権限が与えられていなかった。

この権限不足で削除するときに内部エラーとなっていたらしい。

何故この権限が与えられていなかったかは不明。SQLサーバインストール時にこの設定変更は出てこないので、バグ?なのかもしれない。

この権限を付与して実行したら、今まで全く反応が無かったファイルが綺麗に指定日数残してファイルが消されていた。気持ちいい。