分離后附加數(shù)據(jù)庫
- 來源:縱橫數(shù)據(jù)
- 作者:中橫科技
- 時(shí)間:2013/2/21 14:33:59
- 類別:新聞資訊
分離后附加數(shù)據(jù)庫和直接關(guān)閉附加數(shù)據(jù)庫的不同
大家知道sp_attach_db和sp_detach_db可以用來附加和分離數(shù)據(jù)庫。但是不知道大家發(fā)現(xiàn)沒有,不使用sp_detach_db分離數(shù)據(jù)庫,直接關(guān)閉數(shù)據(jù)庫服務(wù),然后用sp_attach_db就可以直接將數(shù)據(jù)文件附加,F(xiàn)在就有兩個(gè)問題
1、為什么不用分離也可以直接附加。
2、用sp_detach_db分離后附加和直接附加有什么不同。
2、用sp_detach_db分離后附加和直接附加有什么不同。
解:
分離和附加數(shù)據(jù)庫時(shí)最重要的是保持?jǐn)?shù)據(jù)的一致性。其中一點(diǎn)是切斷數(shù)據(jù)庫使用戶不能再操作數(shù)據(jù)庫,這是肯定的,但最重要的是:數(shù)據(jù)庫運(yùn)行中肯定會有一些臟頁,使用sp_detach_db可以保證所有臟頁都被寫入了磁盤。而直接關(guān)閉數(shù)據(jù)庫則不能保證這一點(diǎn)。
這就導(dǎo)致了分離后附加和直接關(guān)閉后附加的不同。
由于使用sp_detach_db分離保證了臟頁全部寫入了磁盤,所以附加時(shí),即使沒有可用的日志文件,也可以成功附加。
這就導(dǎo)致了分離后附加和直接關(guān)閉后附加的不同。
由于使用sp_detach_db分離保證了臟頁全部寫入了磁盤,所以附加時(shí),即使沒有可用的日志文件,也可以成功附加。
測試時(shí)mssql返回的信息(先分離后附加):
Device activation error. The physical file name'
d:\sqlserverdatabase\MSSQL\data\sqlbpa_log.LDF'
may be incorrect.New log file '
D:\sqlserverdatabase\MSSQL\Data\sqlbpa_log.LDF'
was created.
以上是使用sp_detach_db分離后,特意刪除了日志文件后附加的結(jié)果。很明顯mssql沒有找到日志文件后,重新創(chuàng)建了日志文件。
而直接關(guān)閉數(shù)據(jù)庫后附加數(shù)據(jù)文件就必須保證數(shù)據(jù)文件和日志文件都可用。如果沒有日志文件,將無法成功附加,因?yàn)椴荒鼙WC數(shù)據(jù)的一致性。
也就是說用sp_detach_db會更安全一些
而直接關(guān)閉數(shù)據(jù)庫后附加數(shù)據(jù)文件就必須保證數(shù)據(jù)文件和日志文件都可用。如果沒有日志文件,將無法成功附加,因?yàn)椴荒鼙WC數(shù)據(jù)的一致性。
也就是說用sp_detach_db會更安全一些