sql server 2005日志文件过大问题解决后分析--针对发布订阅产生的日志问题
但隨著時間遷移,發(fā)現(xiàn)日志文件逐漸變大,三四個月后竟然達(dá)到10g之巨。期間有嘗試過處理,方法如下:
1.清空日志
DUMP TRANSACTION 庫名 WITH NO_LOG
2.截斷事務(wù)日志:
BACKUP LOG 數(shù)據(jù)庫名 WITH NO_LOG
3.收縮數(shù)據(jù)庫文件(如果不壓縮,數(shù)據(jù)庫的文件不會減小)
同時也注意到將數(shù)據(jù)庫的恢復(fù)模式從“完整”改為“簡單”。但是操作后的日志非但沒有減小,反而略有增大。也考慮到是否要使用分離數(shù)據(jù)庫的方法將日志文件刪除后,再附加數(shù)據(jù)庫。但這只是治標(biāo)不治本的方法,且對系統(tǒng)的運行存在影響。
這時看到一篇文章介紹,用DBCC UPDATEUSAGE命令修復(fù)數(shù)據(jù)庫的行記錄數(shù),修復(fù)了一些錯誤,但是還是無法收縮。根據(jù)該文章的提示,使用了這樣一個函數(shù):DBCC OPENTRAN(Db_Name),顯示類似下面的信息:
已復(fù)制的事務(wù)信息:
最早的分布式 LSN : (0:0:0)
最早的非分布式 LSN : (1051867:2025:1)
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
而在其它正常的數(shù)據(jù)庫上運行這個命令,則沒有前面三行東西。接著使用了exec sp_removedbreplication ‘Db_Name’,奇跡出現(xiàn)了,該數(shù)據(jù)庫日志文件立馬減少到了1兆多。
為什么會出現(xiàn)這樣的情況呢?sp_removedbreplication的msdn解釋是:該存儲過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫中或在訂閱服務(wù)器的訂閱數(shù)據(jù)庫中執(zhí)行。 該過程將從執(zhí)行它的數(shù)據(jù)庫中刪除所有復(fù)制對象,但它不會從其他數(shù)據(jù)庫(例如,分發(fā)數(shù)據(jù)庫)中刪除對象。非常的拗口,難于理解。下面這句話相信同樣不好理解:如果將數(shù)據(jù)庫附加到的服務(wù)器不是該數(shù)據(jù)庫從中分離的服務(wù)器,并且啟用了分離的數(shù)據(jù)庫以進(jìn)行復(fù)制,則應(yīng)該運行 sp_removedbreplication 從數(shù)據(jù)庫刪除復(fù)制。
換言之,通常如果你設(shè)置過數(shù)據(jù)庫復(fù)制或發(fā)布,而后來設(shè)置失敗并沒有啟用,可能會導(dǎo)致這個問題,你看不到跟復(fù)制有關(guān)的內(nèi)容,但是在數(shù)據(jù)庫里卻存在這樣的東西,于是日志被它堵住了,這成了一個永遠(yuǎn)無法完成的命令,所以后續(xù)的日志都無法截斷。執(zhí)行了這個命令以后,強制清除了復(fù)制內(nèi)容。
因此我們的日志文件變得過大且無法正常截斷問題的根源可能在于:從sql2000升級到sql2005的過程中存在兼容性問題或者sql2005存在bug,因為在升級過后群集的數(shù)據(jù)庫發(fā)布與sdb03的訂閱是正常的。
轉(zhuǎn)載于:https://www.cnblogs.com/y0umer/archive/2011/07/05/3839314.html
總結(jié)
以上是生活随笔為你收集整理的sql server 2005日志文件过大问题解决后分析--针对发布订阅产生的日志问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小度1s和1c功能有区别吗(古代小字与小
- 下一篇: 周星驰担任网飞版《美猴王》执行制作:定档