T-SQL スクリプトによるデータベースのバックアップ - 変数の宣言と設定に関する問題

T-SQL スクリプトによるデータベースのバックアップ - 変数の宣言と設定に関する問題

以下のスクリプトでデータベースをバックアップできない理由を教えていただけますか? スクリプトは実行できますが、バックアップは作成されませんでした。SQL
Server 2008 を使用しています。

DECLARE @pathName NVARCHAR(512)
SET @pathName = 'C:\Backup\MyBackup.bak'

...

EXEC sp_add_jobstep
...
@command = 'BACKUP DATABASE MyBackup TO DISK = @pathName WITH INIT',
...

答え1

ご覧になりましたかmsdn.microsoft.com/ja-jp/library/ms187358%28v=sql.100%29.aspx より?

SQL Server エージェント ジョブにローカル変数を挿入しようとしているようです。

このセクションに基づいて:

[ @command= ] 'コマンド'

The commands to be executed by SQLServerAgent service through subsystem. 

コマンドは nvarchar(max) で、既定値は NULL です。SQL Server エージェントは、ソフトウェア プログラムを作成するときに変数が提供するのと同じ柔軟性を提供するトークン置換を提供します。

ローカル変数の代わりにトークンを使用してみるのも良いでしょう。この記事は良い出発点となるでしょう: msdn.microsoft.com/ja-jp/library/ms175575%28v=sql.100%29.aspx より

指摘されているように、あなたの解決策は何かのようなもの:

@command = 'BACKUP DATABASE MyBackup TO DISK = $(ESCAPE_SQUOTE (@pathName)) WITH INIT'

関連情報