2011-12-13 238 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 
相關問題