sqlserver2008 R2 數據庫事務日誌已滿

報錯:數據庫 .... 的事務日誌已滿。若要查明無法重用日誌中的空間的原因,請參閱 sys.databases 中的   log_reuse_wait_desc 列

 

處理辦法:

--將數據庫設爲簡單模式。日誌文件自動斷開。

 alter database dbname set recovery simple

--查看日誌文件狀況
 use dbname
 dbcc shrinkfile('logname')  --like  XXXX_log

--恢復數據庫模式
 alter database dbname set recovery full


收縮數據庫文件

企業管理器--右鍵你要壓縮的數據庫--所有任務--收縮數據庫--收縮文件  

--選擇日誌文件--在收縮方式裏選擇收縮至XXM,這裏會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了   

也可以用SQL語句來完成   
--收縮數據庫   
DBCC   SHRINKDATABASE(庫名)   
    
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select   *   from   sysfiles   
DBCC   SHRINKFILE(1)

4.爲了以後能自動收縮,做如下設置:   
企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"   

--SQL語句設置方式:   
EXEC   sp_dboption   '庫名',   'autoshrink',   'TRUE'  

5.爲了最大化的縮小日誌文件(如果是sql   7.0,這步只能在查詢分析器中進行)   
(1)分離數據庫:   
企業管理器--服務器--數據庫--右鍵--分離數據庫   
    
(2)在我的電腦中刪除LOG文件   
    
(3)附加數據庫:   
企業管理器--服務器--數據庫--右鍵--附加數據庫   
    
此法將生成新的LOG,大小隻有500多K   

或用代碼:     
下面的示例分離   pubs,然後將   pubs   中的一個文件附加到當前服務器。   
    
(1)分離   
EXEC   sp_detach_db   @dbname   =   '庫名'   
    
(2)刪除日誌文件   
    
(3)再附加   
EXEC   sp_attach_single_file_db   @dbname   =   '庫名',     
        @physname   =   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\庫名.mdf'   
    
  
6.如果想以後不讓它日誌增長得太大   
企業管理器--服務器--右鍵數據庫--屬性--事務日誌   
--將文件增長限制爲xM(x是你允許的最大數據文件大小)   

--SQL語句的設置方式:   
alter   database   庫名   modify   file(name=邏輯文件名,maxsize=20)

(三)說明:

1.請按步驟進行,未進行前面的步驟,請不要做後面的步驟 ,否則可能損壞你的數據庫。

2.一般不建議做第5,6兩步   
第5步不安全,有可能損壞數據庫或丟失數據   。
第6步如果日誌達到上限,則以後的數據庫處理會失敗,在清理日誌後才能恢復。

3.上面的所有“庫名”都指你要處理的數據庫的庫名



發佈了211 篇原創文章 · 獲贊 29 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章