程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLServer事務日志的壓縮與刪除方法

SQLServer事務日志的壓縮與刪除方法

編輯:關於SqlServer

做項目的時候拿到一個只有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,具 體意思查看聯機幫助.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved