SQL Server - メンテナンスクリーンアップタスクでファイルが削除されない時の対処方法
SQL Serer の メンテナンスプランで、データベースのバックアップをとったり、古くなったバックアップファイルを削除したりすることがあると思います。
ここでは、メンテナンスクリーンアップタスクで、データベースのバックアップファイルを削除するように設定していて、実行結果は成功ステータスなのにファイルは削除されない、という時の原因のひとつと対処方法をご紹介します。
メンテナンスクリーンアップタスクの設定と状況の確認
今回の例では、次のように SQL Server のメンテナンスプランで、1 日一回 12:00 AM にデータベースのフルバックアップを取ってから、メンテナンスクリーンアップタスクで古いバックアップファイルを削除します。
メンテナンスクリーンアップタスクの設定は次のようになっていて、C:\Test\MYSQL\Backup フォルダ内の、一週間より前に作成された bak 拡張子のファイルを削除するように設定しています。
このメンテナンスプランを実行すると以下のように成功しているように見えるのに、bak ファイルは削除されていないというような状況が起こった時の対処方法のひとつを今回はご説明します。
メンテナンスクリーンアップタスクでファイルが削除されない時の対処方法
実行が成功しているのに、メンテナンスクリーンアップタスクでファイルが削除されない時には、フォルダの権限が足りていない可能性があります。
解決方法のひとつとして SQL Server のデフォルトの Backup フォルダと同様に、メンテナンスクリーンアップタスクで指定しているフォルダに NT SERVICE⧹MSSQLSERVER のアカウントにフルコントロールのアクセス許可を与えることによって解決されることがあります。
[SQL Server のデフォルトの backup フォルダの権限]
メンテナンスクリーンアップタスクで指定しているフォルダを右クリックして、プロパティ画面のセキュリティタブを開きます。
MSSQLSERVER は存在していないので、[編集] ボタンをクリックします。
[追加] ボタンをクリックします。
場所にローカルのコンピュータを選択し、オブジェクト名に NT SERVICE\MSSQLSERVER と入力し、[名前の確認] ボタンをクリックします。
複数の名前が見つかった場合は MSSQLSERVER を選択して、[OK] ボタンをクリックします。
MSSQLSERVER が選択されたことを確認して、 [OK] ボタンをクリックします。
MSSQLSERVER を選択し、フルコントロールにチェックを入れて、[OK] ボタンをクリックします。
メンテナンスクリーンアップタスクで指定しているフォルダに、NT SERVICE⧹MSSQLSERVER アカウントにフルコントロールのアクセス許可を与えることができました。
これで、再度メンテナンスクリーンアップタスクを実行してみてください。
以上、メンテナンスクリーンアップタスクでファイルが削除されない原因のひとつと対処方法をご紹介しました。