打开SQL Server .bak文件(不还原!)

我一直在阅读很多关于如何从.bak文件恢复SQL Server中的数据库的谷歌职位和StackOverflow问题。

但是他们都没有说明如何只读取数据库备份中的表。 (我还能find什么?)

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

编辑:

我只想把我的T-SQL解决scheme发布到这个问题上,所以其他人可能会使用它,我可以回去查看它;)

首先,我创build了一个名为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 

我希望这有帮助 :)

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

  1. 连接到您的数据库实例(例如,“localhost \ sqlexpress”)
  2. 或者:

    • a)select要恢复的数据库; 或者可选地
    • b)只需创build一个新的空数据库来恢复。
  3. 右键单击“任务”,“还原”,“数据库”

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

PS:我再一次强调:你可以在“scratch数据库”上轻松做到这一点 – 你不需要覆盖你当前的数据库。 但是你确实需要恢复

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

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

我知道的唯一的工具可以使.bak文件没有还原它们的意义是红门SQL比较专业人员 (和随附的SQL数据比较),它们允许您比较您的数据库结构与.bak文件的内容。 红门工具是绝对的奇妙 – 强烈build议,值得每一分钱,他们的成本!

我刚刚检查了他们的网站 – 看起来确实可以用SQL Compare Pro从.bak文件中恢复单个表。 🙂

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

只需添加我的TSQL脚本解决scheme:

首先; 添加一个名为backup_lookup的新数据库。 然后运行这个脚本,插入你自己的数据库的根path和备份文件path

 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 

单独使用SQL Server 2008似乎是不可能的。 您将需要第三方工具的帮助。

它会帮助你使你的.bak像一个实时数据库一样行事:

http://www.red-gate.com/products/dba/sql-virtual-restore/