使用 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

你看过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 Agent 提供标记替换,可为您提供编写软件程序时变量所提供的相同灵活性。

您可能想尝试使用标记而不是局部变量。这篇文章可能是一个很好的起点: http://msdn.microsoft.com/en-us/library/ms175575%28v=sql.100%29.aspx

正如它指出的那样,您的解决方案看起来就像是

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

相关内容