Восстановление базы данных: FROM DISK = variable + string -> Неверный синтаксис рядом с '+' - PullRequest
0 голосов
/ 10 октября 2019

Моя цель - создать скрипт, который восстанавливает базу данных из файла резервной копии.

USE [master]

DECLARE @backupsFolder NVARCHAR(256) = N'C:\DatabaseBackups\'

RESTORE DATABASE [MY_DB] FROM  DISK = @backupsFolder + 'MY_DB.bak'enter code here

Во время выполнения возникает ошибка:

Неверный синтаксис рядом с '+'.

Проблема только в том случае, когда путь объединяется. Только переменная или только строка работают нормально. Я попытался также обернуть это скобками -> все еще не работает. Для меня нет ничего сложного в том, чтобы добавить переменную следующим образом:

DECLARE @bakPath NVARCHAR(256) = @backupsFolder + 'MY_DB.bak'

Просто интересно, почему SQL Server не позволяет мне объединять значения сразу после DISK =?

1 Ответ

0 голосов
/ 10 октября 2019

Вы должны использовать динамический SQL для этого. Этого должно быть достаточно для начала работы:

DECLARE @backupsFolder NVARCHAR(256) = N'C:\DatabaseBackups\'
DECLARE @SQL nvarchar(MAX);

SET @SQL = N'RESTORE DATABASE [MY_DB] FROM  DISK = ' + REPLACE(@backupsFolder,N'''',N'''''') + 'MY_DB.bak --enter code here';

EXEC sp_executesql @SQL;

Примечание. Я бы обычно использовал QUOTENAME вместо REPLACE, чтобы минимизировать внедрение, однако пути к файлам могут (и делают)иметь более 128 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...