Opening a SQL Server .bak file (Not restoring!)

前端 未结 5 1309
粉色の甜心
粉色の甜心 2021-01-30 13:18

I have been reading a LOT of google posts and StackOverflow questions about how to restore a database in SQL Server from a .bak file.

But none of them states how to just

相关标签:
5条回答
  • 2021-01-30 13:23

    The only workable solution is to restore the .bak file. The contents and the structure of those files are not documented and therefore, there's really no way (other than an awful hack) to get this to work - definitely not worth your time and the effort!

    The only tool I'm aware of that can make sense of .bak files without restoring them is Red-Gate SQL Compare Professional (and the accompanying SQL Data Compare) which allow you to compare your database structure against the contents of a .bak file. Red-Gate tools are absolutely marvelous - highly recommended and well worth every penny they cost!

    And I just checked their web site - it does seem that you can indeed restore a single table from out of a .bak file with SQL Compare Pro ! :-)

    0 讨论(0)
  • 2021-01-30 13:27

    It doesn't seem possible with SQL Server 2008 alone. You're going to need a third-party tool's help.

    It will help you make your .bak act like a live database:

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

    0 讨论(0)
  • 2021-01-30 13:35

    There is no standard way to do this. You need to use 3rd party tools such as ApexSQL Restore or SQL Virtual Restore. These tools don’t really read the backup file directly. They get SQL Server to “think” of backup files as if these were live databases.

    0 讨论(0)
  • 2021-01-30 13:38

    From SQL Server 2008 SSMS (SQL Server Management Studio), simply:

    1. Connect to your database instance (for example, "localhost\sqlexpress")
    2. Either:

      • a) Select the database you want to restore to; or, alternatively
      • b) Just create a new, empty database to restore to.
    3. Right-click, Tasks, Restore, Database

    4. Device, [...], Add, Browse to your .bak file
    5. Select the backup.
      Choose "overwrite=Y" under options.
      Restore the database
    6. It should say "100% complete", and your database should be on-line.

    PS: Again, I emphasize: you can easily do this on a "scratch database" - you do not need to overwrite your current database. But you do need to RESTORE.

    PPS: You can also accomplish the same thing with T-SQL commands, if you wished to script it.

    0 讨论(0)
  • 2021-01-30 13:42

    Just to add my TSQL-scripted solution:

    First of all; add a new database named backup_lookup. Then just run this script, inserting your own databases' root path and backup filepath

    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
    
    0 讨论(0)
提交回复
热议问题