2016-03-09 3 views
0

Я пытаюсь создать скрипт 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' 

К сожалению, это требует знаний логического имени до запроса поэтому он не очень полезен для сценария общего назначения. Есть ли способ получить логическое имя и динамически заполнять его, чтобы сделать это более общей целью?

+0

Насколько я знаю, по безналу является собственным форматом, и нет никакого способа узнать, как разобрать его. – Hogan

+0

Возможно, вы сможете использовать команду restore, чтобы получить информацию о том, что содержится в наборе резервных копий. Затем отредактируйте свой скрипт на основе содержимого, которое вы найдете. https://msdn.microsoft.com/en-us/library/ms178536.aspx –

ответ

2

Использования restore filelistonly commamd

+1

Я использую это все время. Когда я восстанавливаю вручную, я запускаю это, копирую/вставляю логические и физические имена в мое окно запроса, а затем манипулируем ими в предложениях 'move' для команды' restore'. –

Смежные вопросы