有人能告诉我为什么我不能用下面的脚本备份我的数据库吗?我可以运行脚本,但它没有创建备份。
我使用的是 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'