1

如果我使用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)

我收到错误消息:

消息 203,级别 16,状态 2,过程 sp_BackupDatabase,第 31 行
名称 'BACKUP DATABASE [数据库名称] TO DISK = 'C:\Users\PC\Desktop\Backup\20121008\db.bak' WITH INIT,NOSKIP, NOFORMAT ' 不是有效的标识符。

我无法弄清楚我在哪里出错。

4

1 回答 1

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

干杯

于 2012-10-08T21:58:43.280 回答