Sql server 存储过程中的备份失败

Sql server 存储过程中的备份失败,sql-server,tsql,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 (@SQLCM

如果我使用的是
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,16级,状态2,程序sp_backupdatebase,第31行
名称“备份数据库[数据库名称]到磁盘”= 带有INIT、NOSKIP的“C:\Users\PC\Desktop\Backup\20121008\db.bak”, “NOFORMAT”不是有效的标识符


我不知道我在哪里出错。

先生,您所做的是将命令作为存储过程执行,当然它不是存储过程名称的有效标识符!因此,我建议您改用
“sp\u executesql”
。如果您的代码工作正常,那么它应该在其他任何地方都能工作

像这样的代码:

Declare @Command    Nvarchar(500);

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

Execute sp_executesql   @Command

干杯

先生,您所做的是将命令作为存储过程执行,当然它不是存储过程名称的有效标识符!因此,我建议您改用
“sp\u executesql”
。如果您的代码工作正常,那么它应该在其他任何地方都能工作

像这样的代码:

Declare @Command    Nvarchar(500);

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

Execute sp_executesql   @Command

干杯

您能再解释一下sp_execute吗?很抱歉我提到了sp_execute。实际上,它是sp_executesql,它的作用与“Exec”(或Execute)关键字相同。它使用可选参数执行指定的语句。请参阅更新。谢谢你迟到的回信。现在,如果我正在使用sp_executesql,我会收到错误消息“过程或函数'sp_executesql'需要参数'@statement',但未提供该参数”。那是什么人?别抱歉,没关系,先生。该消息确实意味着您在向过程传递@Command时遇到问题。你能给我看看你写的吗?只是执行过程的一行。谢谢,现在可以用了。我对你提供的链接做了一点研究,我能够做到这一点。谢谢你的帮助。你能再解释一下sp_execute吗?很抱歉我提到了sp_execute。实际上,它是sp_executesql,它的作用与“Exec”(或Execute)关键字相同。它使用可选参数执行指定的语句。请参阅更新。谢谢你迟到的回信。现在,如果我正在使用sp_executesql,我会收到错误消息“过程或函数'sp_executesql'需要参数'@statement',但未提供该参数”。那是什么人?别抱歉,没关系,先生。该消息确实意味着您在向过程传递@Command时遇到问题。你能给我看看你写的吗?只是执行过程的一行。谢谢,现在可以用了。我对你提供的链接做了一点研究,我能够做到这一点。感谢您的帮助。如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!