2011-12-13 225 views
37

我一直在阅读很多关于如何从.bak文件恢复SQL Server数据库的谷歌文章和StackOverflow问题。打开SQL Server .bak文件(不恢复!)

但他们都没有说明如何只读取数据库备份中的表。 (无论如何我都找不到?)

我只想查看一些现在已经被删除的旧信息,而没有实际恢复完整的数据库。 这可能吗?

编辑:

我只是想后我的T-SQL解决问题的方法,这样别人可以使用它,我可以回去看看它;)

首先,我创建了一个新数据库名为backup_lookup,并将其脱机。 之后,我可以恢复我的旧数据库mydb到新的,没有触摸我的原始。

USE master 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'D:\backup\mydb.bak' 
WITH REPLACE, 
MOVE 'mydb' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'mydb_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO 

我希望这有助于:)

回答

29

从SQL Server 2008 SSMS(SQL Server Management Studio中),简单地说:

  1. 连接到数据库实例(例如, “本地主机\ SQLEXPRESS”)
  2. 或者:

    • a)选择要恢复的数据库;或者,或者
    • b)只需创建一个新的空数据库即可恢复。
  3. 右键单击,任务,恢复,数据库

  4. 设备,[...],添加,浏览到您的.bak文件
  5. 选择备份。
    在选项下选择“覆盖= Y”。
    恢复数据库
  6. 它应该说“100%完成”,并且你的数据库应该是联机的。

PS:我再次强调的是:你可以很容易地做到这一点了“从无到有数据库”上 - 你需要覆盖当前的数据库。但你需要恢复

PPS:如果你想编写脚本,你也可以用T-SQL命令完成同样的事情。

+0

啊,所以我只能做一个临时数据库,并将其还原成,事后删除它不会对我的原始数据库的任何影响? :) – Behrens 2011-12-13 22:38:21

+0

是的,正好:) – paulsm4 2011-12-13 23:08:18

+0

+1和接受因为免费的解决方案:) – Behrens 2011-12-14 10:12:34

9

,唯一可行的办法是恢复.bak文件。这些文件的内容和结构是没有记录因此,真的没有办法(除了一个可怕的黑客)得到这个工作 - 绝对不值得你的时间和努力!

的唯一工具我所知道的,可以使.bak文件感无需恢复他们是Red-Gate SQL Compare Professional(和伴随的SQL数据比较),它允许您将数据库结构针对.bak文件的内容进行比较。红门工具绝对非凡 - 强烈推荐,值得每一分钱!

我刚刚检查了他们的网站 - 它似乎确实可以用SQL Compare Pro从.bak文件中恢复单个表格! :-)

9

还有就是要做到这一点没有标准的方式。您需要使用第三方工具,例如ApexSQL RestoreSQL Virtual Restore。这些工具不直接读取备份文件。他们让SQL Server“思考”备份文件,就好像这些文件是实时数据库一样。

1

只是添加我的TSQL脚本解决方案:

首先;添加一个名为backup_lookup的新数据库。 然后,只需运行该脚本,将自己的数据库根路径和备份文件路径

USE [master] 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'C:\backup.bak' 
WITH REPLACE, 
MOVE 'Old Database Name' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'Old Database Name_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO