У меня есть следующий скрипт для восстановления базы данных. На линии, которая говорит:Сценарий восстановления базы данных говорит Не удается открыть устройство резервного копирования, когда путь передан FROM DISK с использованием переменной
FROM DISK = @backup_location --N'C:\Temp\TempDB.bak'
Если я использую переменную @backup_location, как указано выше, она завершается с ошибкой:
Msg 3201, Level 16, State 2, Line 24 Cannot open backup device 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\C'. Operating system error 2(The system cannot find the file specified.). Msg 3013, Level 16, State 1, Line 24 RESTORE DATABASE is terminating abnormally.
Если я жесткий код местоположение с помощью:
FROM DISK = N'C:\Temp\TempDB.bak'
Он отлично работает.
Как я могу использовать переменную для указания пути к базе данных?
USE [master]
Go
-- DECLARE VARIABLES:
DECLARE @dbname SYSNAME
DECLARE @backup_location VARCHAR
SET @dbname = 'TempDB';
SET @backup_location = N'C:\Temp\TempDB.bak';
-- BEGIN: KILL ACTIVE CONNECTIONS
Declare @spid int
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname)
While @spid Is Not Null
Begin
Execute ('Kill ' + @spid)
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname) and spid > @spid
End
-- END: KILL ACTIVE CONNECTIONS
-- RESTORE DB:
RESTORE DATABASE @dbname
FROM DISK = @backup_location --N'C:\Temp\TempDB.bak'
WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5
Go
Спасибо за ваше время.