Я пытаюсь создать скрипт python, который будет динамически восстанавливать базы данных из .bak-файлов. Выполнение запросаДинамически получить логическое имя DB при восстановлении из .bak файла
RESTORE DATABASE db_name FROM DISK = '\\path\to\db\db_name.bak' WITH REPLACE
отлично работает, если оригинальное имя базы данных не существует, однако, так как есть несколько серверов и часто дублируют названия, это не всегда так.
В том случае, когда имя .mdf, содержащееся в файле .bak действительно существует, то с синтаксисом MOVE полезно, как показано ниже
RESTORE DATABASE db_name
FROM DISK = '\\path\to\db\db_name.bak'
WITH
MOVE 'Logical_name' TO '\\somepath\...\MyDB.mdf'
К сожалению, это требует знаний логического имени до запроса поэтому он не очень полезен для сценария общего назначения. Есть ли способ получить логическое имя и динамически заполнять его, чтобы сделать это более общей целью?
Насколько я знаю, по безналу является собственным форматом, и нет никакого способа узнать, как разобрать его. – Hogan
Возможно, вы сможете использовать команду restore, чтобы получить информацию о том, что содержится в наборе резервных копий. Затем отредактируйте свой скрипт на основе содержимого, которое вы найдете. https://msdn.microsoft.com/en-us/library/ms178536.aspx –