Ошибка при использовании переменной в хранимой процедуре SQL Server
Я пытаюсь сделать полную резервную копию базы данных и получить сообщение об ошибке, что я должен объявить скалярную переменную. Ниже мой код; Я не знаю, использую ли я переменные прямо в параметрах хранимой процедуры. Любая помощь будет оценена
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 ответ
Решение
Вы получаете ошибку, потому что ваша команда шага задания содержит строку @backupfilename
, которая является переменной, которая не определена в контексте этой команды. Если я не ошибаюсь sp_add_jobstep
не поддерживает способ передачи параметров в эту команду, поэтому вам нужно создать командную строку без параметров:
set @path ='BACKUP DATABASE AdventureWorks2012 TO DISK ='''+ @backupfilename + ''''
Здесь я связал строку, а также добавил кавычки.