web-dev-qa-db-ja.com

Ola Hallengrens-出力ファイルのクリーンアップでファイルが削除されない

Ola Hallengrensのバックアップ、dbcc、およびインデックスジョブを実行していますが、何らかの理由で出力ファイルのクリーンアップをスケジュールしていません。今日これに気づき、2つ以上のインスタンスを持つサーバーで実行しようとしたときに、古いログは削除されません。たとえば、2つのインスタンスを持つ1つのサーバーをセットアップし、それをAvailabilityGroupsでセットアップします。スクリプトを実行すると、次のように出力されます(ページ全体を占めていなかったため、いくつかの行を削除しましたが、いくつかのファイルを削除しました)。

日付2017-07-04 10:57:55ジョブ履歴のログ(出力ファイルのクリーンアップ)

ステップID 1サーバーSERVER1183\INST01ジョブ名出力ファイルクリーンアップステップ名出力ファイルクリーンアップ期間00:01:54 Sql重大度0 SqlメッセージID 0オペレーターEメールオペレーターネット送信オペレーターページ再試行0

ユーザーとして実行されたメッセージ:VT\sqladmin-internaltes。 ... 8C0E25584E08C4CB393567C2C66083E_1_20170301_132833.txt "デル" E:\ MSSQL\INST01\MSSQL12.INST01\MSSQL\Log "\" DatabaseBackup_0x18C0E25584E08C4CB393567C2C66083E_1_20170304 "SQL" SQL "SQLMSINST\MSSQLSQL\INST12" MSMSSQL\INST12 "MSMSSQL\SQL12\MSSQL\SQL12\MSSQL\SQLSQL\INST12\MSSQL\SQLSQL\INST12\MSSQL\SQL12\SQLSQL\INST12\MSSQL\SQLSQL\INST12\MSSQL\SQL12\SQLSQL\INST12\MSSQL\SQL12\SQLSQL\INST12 ...プロセス終了コード0。ステップは成功しました。

E:\ MSSQL\INST01\MSSQL12.INST01\MSSQL\LogにあるLogsフォルダーをチェックインした後も、12500個のファイルが残っています。

ジョブは、出力ファイル構成を使用して、Olasジョブを追加するときに標準としてセットアップされます。

$(ESCAPE_SQUOTE(SQLLOGDIR))\IndexOptimize_$(ESCAPE_SQUOTE(JOBID))_$(ESCAPE_SQUOTE(STEPID))_$(ESCAPE_SQUOTE(STRTDT))_$(ESCAPE_SQUOTE(STRTTM)).txt

次のようなjobコマンドはまったく変更していません。

cmd /q /c "For /F "tokens=1 delims=" %v In ('ForFiles /P
"$(ESCAPE_SQUOTE(SQLLOGDIR))" /m *_*_*_*.txt /d -30 2^>^&1') do if
EXIST "$(ESCAPE_SQUOTE(SQLLOGDIR))"\%v echo del
"$(ESCAPE_SQUOTE(SQLLOGDIR))"\%v& del
"$(ESCAPE_SQUOTE(SQLLOGDIR))"\%v"

スクリプトは、単一のインスタンスまたはデフォルトのインスタンスの場合に正常に機能します。それが関連するのはSQL 2014ですが、2008年と2012年にもこの問題があります。

誰かがこれを理解したか、これを修正する方法を知っていますか?

1
Jonathan

これは、可用性グループが設定されていない2つ以上のインスタンスで正常に機能することを付け加えておきます。 1つ以上のインスタンスとAGがセットアップされている場合のみです。しかし、代わりにパラメーターを編集して$(ESCAPE_SQUOTE(SQLLOGDIR))を実際のパスフォルダーに変更することで、うまくいきました。

2
Jonathan