2013-08-19 140 views
33

的.mdf和.ldf文件數據庫出於某種原因,我必須卸載SQL Server 2008 R2,但在此之前,我從恢復從SQL Server 2008

Ç複製我的數據庫的兩個文件(.mdf.ldf) :\ Program Files文件(x86)的\ Microsoft SQL Server的\ MSSQL10_50.MSSQL2008 \ MSSQL \ DATA現在

,問題是,是否有可能對我來說,恢復從這些文件中的數據庫在我的新安裝的SQL Server 2008 R2。

如果是:那我該怎麼做?

+0

是的,當您有兩個文件時,您可以[附加數據庫](http://technet.microsoft.com/en-us/library/ms190209.aspx)。 –

+0

我試圖這樣做,但它會在連接數據庫時發生錯誤。 –

+0

錯誤說無法打開物理文件。 操作系統錯誤5(訪問被拒絕) MSSQL服務器錯誤5120 –

回答

81

是的,這是可能的。 的步驟是:

  1. 先放.mdf.ldf文件中C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\

  2. 然後去SQL軟件,用鼠標右鍵單擊「數據庫」,然後單擊「連接」選項,打開附加數據庫對話框

  3. 點擊「添加」按鈕,打開和定位數據庫文件從C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\

  4. 單擊「確定」按鈕。 SQL Server Management Studio從.MDF文件加載數據庫。

10

首先谷歌搜索讓我這個答案。所以我想用更新版本的attach,detach來更新它。

Create database dbname 
On 
( 
Filename= 'path where you copied files', 
Filename ='path where you copied log' 
) 
For attach; 

此外,如果你的數據庫是正常關閉(沒有活動的事務,同時數據庫被關閉),你不要有日誌文件,你可以使用下面的方法,SQL Server將創建一個新的事務日誌文件..

Create database dbname 
    On 
    ( 
    Filename= 'path where you copied files' 
    ) 
    For attach; 

如果沒有指定事務日誌文件,SQL將嘗試在默認路徑看,並會嘗試不論數據庫是否正常關閉,或者不使用它..

這裏是什麼MSDN不得不說這個..

如果讀寫數據庫具有單個日誌文件,並且未指定日誌文件的新位置,則附加操作會在文件的舊位置中查找。如果找到,則使用舊的日誌文件,而不管數據庫是否完全關閉。但是,如果未找到舊的日誌文件,並且數據庫乾淨地關閉並且沒有活動的日誌鏈,則附加操作會嘗試爲數據庫構建新的日誌文件。

有這種方法有一些限制和一些負面影響也..

1.attach-和分離操作數據庫
2.Database守信,全部關閉跨數據庫所有權鏈接設置爲關閉
3。分離只讀數據庫會丟失關於差異備份的差異基礎的信息。

大多數importantly..you不能與最新版本將數據庫附加到一個較早版本

參考文獻:
https://msdn.microsoft.com/en-in/library/ms190794.aspx

+0

什麼是全站? – cybermonkey

+1

@cybermonkey:一些格式問題,無法回想,但現在更新 – TheGameiswar

+0

哇,那是..快。通常當我評論這樣的東西時,作者從來不會解決這個問題。 – cybermonkey

7

從腳本(一個工程):

CREATE DATABASE Northwind 
ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind.mdf') 
LOG ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind_log.ldf') 
GO 

明顯更新路徑:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

要在您的.mdf和.ldf居住。

0
use test 
go 
alter proc restore_mdf_ldf_main (@database varchar(100), @mdf varchar(100),@ldf varchar(100),@filename varchar(200)) 
as 
begin 
begin try 
RESTORE DATABASE @database FROM DISK = @FileName 
with norecovery, 
MOVE @mdf TO 'D:\sql samples\sample.mdf', 
MOVE @ldf TO 'D:\sql samples\sample.ldf' 
end try 
begin catch 
SELECT ERROR_MESSAGE() AS ErrorMessage; 
print 'Restoring of the database ' + @database + ' failed'; 
end catch 
end 

exec restore_mdf_ldf_main product,product,product_log,'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\product.bak' 
4

我有一個答案你 是的,這是可能的。

轉到

SQL Server Management Studio中>選擇數據庫>點擊連接

然後選擇並添加.mdf和.ldf文件。點擊確定。