打开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)简单地说:
- 连接到您的数据库实例(例如,“localhost \ sqlexpress”)
-
或者:
- a)select要恢复的数据库; 或者可选地
- b)只需创build一个新的空数据库来恢复。
-
右键单击“任务”,“还原”,“数据库”
- 设备,[…],添加,浏览到您的.bak文件
- select备份。
在选项下select“覆盖= Y”。
还原数据库 - 它应该说“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像一个实时数据库一样行事: