Назад | Перейти на главную страницу

Резервное копирование базы данных с помощью сценария 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',
...

Вы смотрели на http://msdn.microsoft.com/en-us/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 обеспечивает замену токена, которая дает вам ту же гибкость, которую обеспечивают переменные при написании программ.

Вы можете попробовать использовать токены вместо локальных переменных. Эта статья может стать для вас хорошей отправной точкой: http://msdn.microsoft.com/en-us/library/ms175575%28v=sql.100%29.aspx

Как указано, ваше решение будет выглядеть что-то вроде:

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