4

私は初めてでT-SQL、データベースをバックアップしようとしています (SQL Server 2008 を使用)。

経由でスクリプトを実行しようとすると、次のsqlcmd -i inputfileエラー メッセージが表示さ れ'DATE' Scripting variable not definedました。

問題は、次のような行があることです: ... TO DISK = "FileName_$(ESCAPE_NONE(DATE)).BAK"... ファイル名に日付が含まれていると、古いバックアップを置き換えることができなくなります。

管理スタジオで実行すると機能しますが、コマンドを使用してコマンドラインで実行するsqlcmd -iと機能しません。

編集:

ジョブ履歴を確認したところ、次のエラー メッセージが表示されました。

「SQL Server 2005 SP1 以降の場合、適切な ESCAPE_xxx マクロを使用して、ジョブを実行する前にトークンを含むジョブ ステップを更新する必要があります」

それが何を意味するのかよくわかりません。を既に使用していますが$ESCAPE_NONE(DATE)、何が問題なのですか?

4

3 に答える 3

0

SQL Server データベースをバックアップし、sqlcmd を使用してそれらに日付を追加しようとしている場合は、簡単に試すことができます。

まず、 http ://support.microsoft.com/kb/2019698 にある sp_BackupDabases という sp を作成します。

次のようなコマンドを使用して、sql cmd から呼び出すことができます。

sqlcmd -U Damieh -P ilovechocolate -S (local) -Q "EXEC sp_BackupDatabases  @backupLocation ='C:\MyBackups\', @BackupType='F'"

これはすでにご存知だと思いますが、念のため: -U はユーザー、-P はパスワード、-S はサーバー、-Q はクエリです。すべてのデータベースまたは一部のデータベースをバックアップできます。そのためのパラメーターがあります。ストアド プロシージャのパラメーターの詳細については、私が提供したのと同じリンクを参照してください。

日付は自動的に追加され、別の場所/方法/形式で必要な場合は、sp のコードで遊ぶことができます。私はこれを、高速ではない sqlserver を持たないサーバー (つまり、.bat とタスク スケジューラを使用しないとバックアップをスケジュールできないことを意味します) で定期的に使用し、大きな成功を収めています。

これがあなたが探していた答えでなかった場合は申し訳ありません=)。良い1日を!

于 2012-10-18T03:04:07.640 に答える