Ошибка при использовании переменной в хранимой процедуре SQL Server - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь сделать полную резервную копию базы данных и получаю сообщение об ошибке, что я должен объявить скалярную переменную.Ниже мой код;Я не знаю, использую ли я переменные прямо в параметрах хранимой процедуры.Любая помощь будет оценена

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 голосов
/ 07 октября 2018

Вы получаете ошибку, потому что ваша команда шага задания содержит строку @backupfilename, которая является переменной, которая не определена в контексте этой команды.Если я не ошибаюсь sp_add_jobstep не поддерживает способ передачи параметров в эту команду, поэтому вам нужно создать командную строку без параметров:

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

Здесь я конкатенировал строку, а также добавил кавычки.

...