Каков наиболее эффективный способ восстановления нескольких баз данных в SQL 2008

Я занимаюсь крупномасштабной миграцией серверов, поэтому мне нужно переместить более 50 баз данных SQL 2005 на новую установку сервера SQL 2008.

Ребята из DB предоставили мне только резервную копию каждой базы данных, поэтому у меня есть каталог с примерно 50 файлами .bak, находящимися в каталоге (например, c: \ db), который мне нужно восстановить.

Мне нужно восстановить каждую базу данных на новый сервер.

Я могу сделать это индивидуально в Management Studio, но это займет много времени. Есть ли более эффективный способ решения этой проблемы.

Итак, мой вопрос:

Каков наиболее эффективный способ восстановления всех этих баз данных?

Машинный фон: сервер - Win 2k8, с SQL 2008 Workgroup Edition, .net 4 устанавливается вместе с Powershell 2.

Заранее спасибо.


person Jeremy Cade    schedule 26.08.2010    source источник
comment
Я пытаюсь получить здесь ответ - stackoverflow.com/questions/22207519/   -  person Steam    schedule 05.03.2014


Ответы (2)


Отредактировано после комментария: вы можете восстановить скрипт, например:

restore database DatabaseName
from disk = N'c:\dir\BackupFileName.bak'
with file = 1,  
move N'DatabaseName' to N'c:\dir\DatabaseName.mdf',  
move N'DatabaseName_log' to N'c:\dir\DatabaseName.ldf',  
stats = 10, 
recovery 

Две move строки перемещают файлы в место на новом сервере. Обычно это имена DatabaseName и DatabaseName_log, но они могут отличаться.

С recovery означает: перевести базу данных в оперативный режим, не дожидаясь дополнительных восстановлений журнала.

Чтобы создать такой сценарий, нажмите кнопку «Сценарий» (вверху слева) в окне мастера восстановления базы данных и нажмите Script action to....

person Andomar    schedule 26.08.2010
comment
Я только что обновил вопрос, чтобы сделать его более ясным. - person Jeremy Cade; 26.08.2010
comment
Это то, что я искал .. Спасибо. - person Jeremy Cade; 27.08.2010
comment
Я пробовал ваш код вот так, и он не сработал - DECLARE @path varchar(3000) DECLARE @file varchar(1000) DECLARE @loc varchar(7000) SET @path = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SS2008\MSSQL\Backup\' SET @file = 'AdventureWorksDW.bak' SET @loc = @path + @file RESTORE FILELISTONLY FROM DISK = @loc GO - person Steam; 06.03.2014

Написать собственное приложение / скрипт? Вы можете расширить SSMS или использовать инструменты SQL-сервера для написания приложения, которое просто считывает эти файлы и восстанавливает их в базе данных. Я знаю, что это возможно в .net, возможно, также можно использовать сценарии PowerShell.

Это эффективно, если эта задача должна быть выполнена за короткий период времени во время производственной миграции, в противном случае накладные расходы на написание приложения превышают 50 операций восстановления вручную! Но если вы разработчик и выбираете вручную, то позор вам! :).

person Roopesh Shenoy    schedule 26.08.2010