在SQL Server存储过程中使用变量时出错

时间:2018-10-07 05:54:59

标签: sql-server executesqlserveragentjob

我正在尝试对数据库进行完整备份,并得到一个错误,我必须声明标量变量。下面是我的代码;我不知道我是否在存储过程参数中使用了变量。任何帮助将不胜感激

DECLARE @backupfilename VARCHAR(1000)
DECLARE @path VARCHAR(1000)

SET @backupfilename='C:\SqlBackups\AdventureWorks\Full\backup_' + CONVERT (VarChar, GetDate(), 112) + '.bak'
SET @path = 'BACKUP DATABASE AdventureWorks2012 TO  DISK = @backupfilename'

EXEC msdb.dbo.sp_add_jobstep  
    @job_name = 'BackupDatabase',   
    @step_name = 'Weekly Full Backup',   
    @subsystem = 'TSQL',   
    @command = @path;

1 个答案:

答案 0 :(得分:2)

由于作业步骤命令包含字符串@backupfilename,这是一个未在此命令的上下文中定义的变量,因此会出现错误。如果我没记错的话,sp_add_jobstep不支持将参数传递到此命令的方法,因此您需要创建不带参数的命令字符串:

set @path ='BACKUP DATABASE AdventureWorks2012 TO  DISK ='''+ @backupfilename + ''''

在这里,我将字符串连接起来并添加了引号。