如果我使用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'不是有效的标识符。
我无法弄清楚我在哪里制造错误。
答案 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
干杯