【问题标题】:Opening a SQL Server .bak file (Not restoring!)打开 SQL Server .bak 文件(不恢复!)
【发布时间】:2012-01-19 18:29:27
【问题描述】:

我已经阅读了很多关于如何从 .bak 文件恢复 SQL Server 中的数据库的谷歌帖子和 StackOverflow 问题。

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

我只是想检查一些现在已被删除的旧信息,而不是实际恢复整个数据库。 这可能吗?

.

编辑:

我只是想发布我的 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

我希望这会有所帮助:)

【问题讨论】:

    标签: sql-server sql-server-2008 backup restore


    【解决方案1】:

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

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

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

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

    PS:我再次强调:您可以轻松地在“临时数据库”上执行此操作 - 您确实不需要覆盖您当前的数据库。但您确实需要恢复

    PPS:如果您想编写脚本,也可以使用 T-SQL 命令完成相同的操作。

    【讨论】:

    • 啊,所以我可以做一个临时数据库并将其恢复,然后将其删除,而不会对我的原始数据库产生任何影响? :)
    【解决方案2】:

    只是添加我的 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
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • SQL 虚拟还原支持于 2015 年 2 月 6 日结束。
      【解决方案4】:

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

      它将帮助您使您的 .bak 像一个实时数据库一样工作:

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

      【讨论】:

      • 又一个红门宝石! :-)
      • 我不太明白为什么微软还没有决定提供这种功能。如果他们这样做了,那对企业有好处..
      • 你说得对。我想我应该为消费者的利益说话!捆绑的力量! *拳头在空中! *
      • 对 redgate 的 SQL 虚拟还原的支持已于 2015 年 2 月 6 日结束,并且不再可用。
      【解决方案5】:

      唯一可行的解​​决方案是恢复 .bak 文件。这些文件的内容和结构没有记录,因此,真的没有办法(除了可怕的 hack)让它工作 - 绝对不值得你花时间和精力!

      我知道的唯一一个可以在不恢复 .bak 文件的情况下理解它们的工具是 Red-Gate SQL Compare Professional(以及随附的 SQL 数据比较),它允许您将数据库结构与 @987654324 的内容进行比较@ 文件。 Red-Gate 工具绝对很棒 - 强烈推荐,而且物有所值!

      我刚刚查看了他们的网站 - 看来您确实可以使用 SQL Compare Pro 从 .bak 文件中恢复单个表! :-)

      【讨论】:

        猜你喜欢
        • 2019-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-20
        • 2017-09-15
        相关资源
        最近更新 更多