做項目的時候拿到一個只有280M的數據庫備份,可是在SQLServer 2000下恢復的時候等了半天才都沒 有恢復完畢,感覺很不可思議,於是懷疑有什麼貓膩。到了數據文件的目錄下一看,果不其然竟然聲稱了 一個接近10G的數據庫日志文件!以前從來沒有做過那麼多數據的數據庫,而且更沒有做過有3年數據庫日 志記錄的數據庫。
這對於硬盤空間不是很充裕的我來說已經超過了能夠忍受的極限,而且另一個80M的 數據庫回復之後生成的日志文件更是誇張的達到了5G+!這是不能忍受的,也是不能被原諒的。
剛開始 的時候不太懂,直接把數據庫日志刪除了,發現這樣數據庫就不能用了,於是百度了一下,發現網上很多 提到了日志的壓縮和刪除技術,正是我想要掌握的內容。仔細整理了一下,大致有這麼幾種方法解決。
方法一:
第一步:
backup log database_name with no_log
或者 backup log database_name with truncate_only
-- no_log和truncate_only是在這裡是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定數據庫的所有數據和日志文件,執行:
dbcc shrinkdatabase (database_name,[,target_percent])
-- database_name是要收縮的數據庫名稱;target_percent是數據庫收縮後的數據庫文件中所要的剩 余可用空間百分比。
2.收縮一次一個特定數據庫中的數據或日志文件,執行
dbcc shrinkfile(file_id,[,target_size])
-- file_id是要收縮的文件的標識 (ID) 號,若要獲得文件 ID,請使用 FILE_ID 函數或在當前數據庫 中搜索 sysfiles;target_size是用兆字節表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc shrinkfile 將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具 體意思查看聯機幫助.