web-dev-qa-db-ja.com

Hallengrenスクリプトで異なるログファイルの場所を指定する

Ola Hallengrenスクリプトに感謝します。 SQL Serverを初めて使用することで、私の生活がとても簡単になりました。ハレングレンさん、ありがとうございます。

別々にバックアップする必要がある5つのユーザーデータベースがあるので、USER_DATABASESを使用する代わりに、データベース名を指定します。スクリプトを使用してストアドプロシージャを作成したとき、出力ファイルディレクトリをG:\Logs\Backupsのように指定しました。ログファイルはそこにありますが、ログファイル名にデータベース名を含めるか、ログファイルのパスをパラメーターとして渡すと便利です。

dbo.CommandLogにもログインしています。中身を調べずに、探しているログファイルを特定できればよいでしょう。

maintenance_solution.sqlを変更せずにこれを行う方法はありますか?

更新が行われるとそれらが消えてしまうので、変更のアイデアは好きではありません。私には、MS SQLとT-SQLに精通しているため、スクリプトはかなり複雑です。

どんな洞察もありがたいです。

シェリー

5
Sherrie

各データベースをバックアップする個別のジョブがあると仮定すると、最善の策は手動で編集することです。

NUTS

残念ながら、これらの tokens の実装方法では、アラートで発生したデータベース名しか取得できません。

「A-」で始まるすべてのトークンは、一般情報トークンのように呼び出すことはできません。

Token   Description
(A-DBN) Database name. If the job is run by an alert, the database name value automatically replaces this token in the job step.
(A-SVR) Server name. If the job is run by an alert, the server name value automatically replaces this token in the job step.
(A-ERR) Error number. If the job is run by an alert, the error number value automatically replaces this token in the job step.
(A-SEV) Error severity. If the job is run by an alert, the error severity value automatically replaces this token in the job step.
(A-MSG) Message text. If the job is run by an alert, the message text value automatically replaces this token in the job step.

できれば、Olaのコードがここに表示されると思います。

  BEGIN
    SET @TokenServer = '$' + '(SRVR)'
    SET @TokenJobID = '$' + '(JOBID)'
    SET @TokenStepID = '$' + '(STEPID)'
    SET @TokenDate = '$' + '(STRTDT)'
    SET @TokenTime = '$' + '(STRTTM)'
  END

タックしようとするとA-DBN文字列に移動すると、ジョブは失敗します。

$(ESCAPE_SQUOTE(SQLLOGDIR))\DatabaseBackup_$(ESCAPE_SQUOTE(JOBID))_$(ESCAPE_SQUOTE(STEPID))_$(ESCAPE_SQUOTE(STRTDT))_$(ESCAPE_SQUOTE(STRTTM))_$(ESCAPE_SQUOTE(A-DBN)).txt

メッセージステップ1の実行を開始できません(理由:変数A-DBNが見つかりません)。ステップは失敗しました。

お役に立てれば!

3
Erik Darling