web-dev-qa-db-ja.com

cmdexecを使用してファイルを移動した後のOla Hallengrenのバックアップソリューションのエラーメッセージはジョブを停止し、これはfaqに同意しません

Ola HallengrenのMaintenanceスクリプトを使用していますが、FAQに記載されているような問題があります。

コンテキストについては、既存のSQL Serverバックアップを新しい共有に移動する必要があり、MSDBの履歴と新しいバックアップの現在の場所が現在の場所と一致しないという問題がありました。

MaintenanceSolution.sqlが作成するデフォルトのジョブを実行すると、「DatabaseBackup-USER_DATABASES-FULL」(実行するパラメーターにわずかな変更を加えた)で、予期したファイルの削除が存在するように見えるため、ジョブが失敗しました。

_EXECUTE @ReturnCode = [master].dbo.xp_delete_file 0, N'\\UNC\Path\Server\Database... Process Exit Code 1. The step failed._

このタイプの最初のエラーの後、ジョブ全体が停止します。

FAQ https://ola.hallengren.com/frequencyly-asked-questions.html で、私が信じている問題に対処する次の段落を見つけました持っている:

最初のエラーの後でジョブが停止するのはなぜですか?

この問題は、T-SQLジョブステップを使用しているために発生しています。 sqlcmdと-bオプションを指定したCmdExecジョブステップを使用することをお勧めします。その後、ジョブはエラー後に続行されます。

MaintenanceSolution.sqlスクリプトを使用して、ジョブを作成できます。

私はこれを再確認し(これがソリューションが構成したデフォルトであると思ったため)、SSMSでの表示に基づいて(タイプ:オペレーティングシステム(CmdExec))、これが事実であることを確認しました。

また、ジョブが-bオプションを使用していることも確認しました。

sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master -Q "EXECUTE [dbo].[DatabaseBackup] @Databases = 'USER_DATABASES', @Directory = N'\\UNC\Path\', @BackupType = 'FULL', @Verify = 'N', @CleanupTime = 750 , @CheckSum = 'Y', @LogToTable = 'Y'" -b

私はすぐにストアドプロシージャを実行していましたが、xp_deleteコマンドからのエラーを変数に割り当て、それをエラーとして発生させただけです(完全に標準のsqlを完全に停止しています)。

ありがとう!

1
ConstantineK

さらに掘り下げた後(そしてほとんどOlaにメールを送信)、私は混乱の原因を見つけました。

CommandLogテーブル(@LogToTable = 'Y')をクエリした後、TSQLジョブステップはエラーの報告であることがわかりましたが、ジョブは実際に完了し、コマンドをテーブルに正常に記録しました(もちろんファイルはディスク上に存在しました。)

TSQLジョブステップは、FAQの別の部分で参照されている最初のエラーでレポートを停止するだけではないようです。

SQL Serverエージェントの履歴で失敗したジョブが報告されている場合は、master.dbo.CommandLogテーブルで同じ失敗が報告されていることを確認し、@ LogToTable = 'Y'が指定されていることを確認してください。

Olaの仕事はFAQで説明されているように動作しており、TSQLジョブステップへの参照が必要なヒントでした。

1
ConstantineK