存储过程中的备份失败

时间:2012-10-08 21:52:59

标签: sql-server tsql

如果我使用BACKUP声明:

BACKUP DATABASE [Database name]
TO DISK = ‘Location’
WITH INIT, NOSKIP, NOFORMAT

备份确实有效。但是,如果我尝试在存储过程中使用相同的查询,如

SET @SQLCMD = N'BACKUP DATABASE [Database Name] TO DISK = ''' + @FILENAME + ''' WITH INIT,NOSKIP, NOFORMAT' 

EXEC (@SQLCMD)

我收到错误消息:

  

Msg 203,Level 16,State 2,Procedure sp_BackupDatabase,Line 31
  名称'BACKUP DATABASE [Database Name] TO DISK =   'C:\ Users \ PC \ Desktop \ Backup \ 20121008 \ db.bak'WITH INIT,NOSKIP,   NOFORMAT'不是有效的标识符。

我无法弄清楚我在哪里制造错误。

1 个答案:

答案 0 :(得分:1)

先生你正在做什么作为存储过程执行命令,当然它不是存储过程名称的有效标识符!所以我建议你改用"sp_executesql"。如果您的代码工作正常,它应该可以在其他任何地方使用。

参考http://msdn.microsoft.com/en-us/library/ms175170(v=sql.105).aspx

喜欢这段代码:

Declare @Command    Nvarchar(500);

Select  @Command    =   N'BACKUP DATABASE [Database Name] TO DISK = ''' + @FILENAME + ''' WITH INIT,NOSKIP, NOFORMAT';

Execute sp_executesql   @Command

干杯