我正在进行大规模服务器迁移,因此我必须将50多个SQL 2005数据库移动到新的SQL 2008服务器安装。
数据库伙伴们只给了我一个每个数据库的备份,所以我有一个目录,其中有50个.bak文件位于我需要恢复的目录(即c:\ db)中。
我需要将每个数据库还原到新服务器。
我可以在Management Studio中单独执行此操作,但这会非常耗时。有没有更有效的方法来解决这个问题。
所以我的问题是:
恢复所有这些数据库的最有效方法是什么。
机器背景: 服务器是Win 2k8,带有SQL 2008 Workgroup Edition,.net 4与Powershell 2一起安装。
提前致谢。
答案 0 :(得分:6)
评论后编辑:您可以编写脚本还原,例如:
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...
。
答案 1 :(得分:0)
编写自定义应用程序/脚本?您可以扩展SSMS或使用SQL Server工具编写只读取这些文件并将其还原到数据库的应用程序。我知道在.net中可能也可以使用powershell脚本。
如果要在生产迁移期间在短时间内完成此任务,这是有效的,否则编写应用程序的开销不仅仅是手动执行50次还原!但如果你是一名开发人员并且你手动选择,那么你就会感到羞耻! :)