sql2008事務日誌已滿
1. sql server2008的ldf文件過大怎麼收縮
在SQL Server中經常遇到事務日誌變大的情況,除了將資料庫設置為「自動收縮」外,還可以使用下面的SQL命令進行快速清除資料庫中的事務日誌,命令如下:
- 第一步:清空日誌
DUMP TRANSACTION
databasename
WITH
NO_LOG
-- 第二步:截斷事務日誌
BACKUP LOG
databasename
WITH
NO_LOG
-- 第三步:收縮資料庫
DBCC SHRINKDATABASE(databasename)
需要說明幾點:
1. 上面的SQL命令需要按照順序執行;
2. 執行上面的命令通常比直接使用右鍵菜單中的「收縮」命令要快很多
參考資料:
SQL SERVER 資料庫日誌已滿,如何收縮資料庫日誌
http://blog.csdn.net/faintbear/archive/2005/02/06/283316.aspx
如何收縮資料庫日誌
2. SQL Server事務日誌被填滿的原因是什麼
錯誤描述:資料庫的事務日誌已滿。若要查明無法重用日誌中的空間的原因 ,請參閱sys.databases 中的 log_reuse_wait_desc 列 。
首先引入一下事務日誌的概念
事務日誌是一個與資料庫文件分開的文件。它存儲對資料庫進行的所有更改,並全部記錄插入、更新、刪除、提交、回退和資料庫模式變化。事務日誌還稱作前滾日誌或重做日誌。
事務日誌是備份和恢復的重要組件,也是使用 SQL Remote 或 [復制代理] 復制數據所必需的。
在預設情況下,所有資料庫都使用事務日誌。事務日誌的使用是可選的,但是,除非您因特殊原因而不使用,否則您應始終使用它。運行帶有事務日誌的資料庫可提供更強的故障保護功能、更好的性能以及數據復制功能。
引發異常的原因:
a.未提交的事務
b.非常大的事務
c.操作:DBCC DBREINDEX 和 CREATE INDEX
d.在從事務日誌備份還原時
e.客戶端應用程序不處理所有結果
f.查詢在事務日誌完成擴展之前超時,您收到假的「Log Full」錯誤消息
g.未復制的事務
解決辦法:
1.釋放磁碟空間(菜鳥適用);
2.把資料庫移到內存充足的磁碟(原理同上);
3.清空日誌:DUMP TRANSACTION 庫名 WITH NO_LOG;
4.截斷事務日誌:BACKUP LOG 庫名 WITH NO_LOG;
3. SQL server資料庫日誌滿了怎麼處理
解決方法
日誌文件滿而造成SQL資料庫無法寫入文件時,可用兩種方法:
一種方法:清空日誌。
1.打開查詢分析器,輸入命令
DUMP
TRANSACTION
資料庫名
WITH
NO_LOG
2.再打開企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。
另一種方法有一定的風險性,因為SQL
SERVER的日誌文件不是即時寫入資料庫主文件的,如處理不當,會造成數據的損失。
1:
刪除LOG
分離資料庫
企業管理器->伺服器->資料庫->右鍵->分離資料庫
2:刪除LOG文件
附加資料庫
企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法生成新的LOG,大小隻有500多K。
注意:建議使用第一種方法。
如果以後,不想要它變大。
SQL2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用SQL語句:
alter
database
資料庫名
set
recovery
simple
另外,如上圖中資料庫屬性有兩個選項,與事務日誌的增長有關:
Truncate
log
on
checkpoint
(此選項用於SQL7.0,SQL
2000中即故障恢復模型選擇為簡單模型)
當執行CHECKPOINT
命令時如果事務日誌文件超過其大小的70%
則將其內容清除在開發資料庫時時常將此選項設置為True
Auto
shrink
定期對資料庫進行檢查當資料庫文件或日誌文件的未用空間超過其大小的25%時,系統將會自動縮減文件使其未用空間等於25%
當文件大小沒有超過其建立時的初始大小時不會縮減文件縮減後的文件也必須大於或等於其初始大小對事務日誌文件的縮減只有在對其作備份時或將Truncate
log
on
checkpoint
選項設為True
時才能進行。
注意:一般立成建立的資料庫默認屬性已設好,但碰到意外情況使資料庫屬性被更改,請用戶清空日誌後,檢查資料庫的以上屬性,以防事務日誌再次充滿。
4. 如何從根本上解決SQL資料庫日誌已滿的問題
1、你設置了日誌文件的最大數,資料庫的恢復模式是完整恢復模式,所有的針對資料庫的改動都會記錄到日誌,不僅僅是你的改動資料庫,資料庫本身的操作也有記錄到日誌,所以,日誌文件才會不斷增長。
2、那是因為大部分的電腦上的資料庫,基本沒怎麼變過,但生產用的資料庫經常變動,所以日誌記錄也變得巨大,我見過資料庫200MB,但是日誌文件50GB,因為本來資料庫有10GB,因為測試需要刪除了大部分的數據,結果導致日誌文件增長到了50GB。
3、定時備份日誌並收縮日誌文件。
4、通過備份日誌,並收縮日誌文件,這個語句你自己網路。
5、日誌是一個以事務編號連續的記錄,比如,我第一次備份的日誌事務編號為1-1000,那麼日誌就會被截斷,並從1001開始,之後的日誌備份就從1001開始了,所以,初始備份一直到最後一次備份都不能刪除,否則使用日誌恢復時會出現問題。
5. 怎麼查看 sql server 2008 死鎖日誌
1.查詢分析器執行 sp_lock 查看
2.右鍵伺服器-選擇「活動和監視器」,查看進程選項。注意「任務狀態」欄位。
3.右鍵服務名稱-選擇報表-標准報表-活動-所有正在阻塞的事務。祝你愉快,滿意請採納哦
6. sqlserver 事務日誌已滿的幾種解決方案
一.刪除日誌文件:(不建議)
二.手動收縮:
1.資料庫右鍵屬性-選項-恢復模式-下拉選擇簡單-最後點擊確定
2.右鍵資料庫-任務-收縮-文件類型-下拉選擇日誌-收縮操作-在釋放未使用.(默認收縮到1MB)-最後點擊確定
3.最後別忘了回到第一步驟把恢復模式改為完整!
三.自動收縮:
1.為了以後能自動收縮,做如下設置:企業管理器–伺服器–右鍵資料庫–屬性–選項–選擇」自動收縮」QL語句設置方式:EXEC sp_dboption 『資料庫名』 『autoshrink』 『TRUE』
2.如果想以後不讓它日誌增長得太大
企業管理器–伺服器–右鍵資料庫–屬性–事務日誌–將文件增長限制為xM(x是你允許的最大數據文件大小)–SQL語句的設置方式:alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20)四.分離附加:分離主資料庫-刪除.ldf文件-附件資料庫;五.使用sql語句:(可設置為計劃)
--將資料庫設為簡單模式。日誌文件自動斷開。
alter databasedbname set recovery simple
--查看日誌文件狀況
usedbname
dbcc shrinkfile(『logname『) --like XXXX_log
--恢復資料庫模式
alter database dbname set recovery full
六.備份日誌:
SQLServer2008先備份日誌將日誌截斷.
再用dbccshrinkfile(日誌文件,1024)收縮日誌文件。
七.設置簡單模式:
設置為簡單模式不記錄日誌;
八.sql自動縮減日誌:
針對日誌這個問題,建議手動寫個小工具(SQL提供自動縮減日誌的腳本寫法),添加到任務計劃中,定時執行!可以節省很多磁碟空間!
sqlserver 事務日誌已滿的幾種解決方案
標簽:建議類型str收縮執行備份步驟任務計劃database
標簽 建議 類型 str 收縮 執行 備份 步驟 任務計劃 database
7. 資料庫事務jeeps日誌已滿,原因為replication
SQLServer中開啟CDC之後,在某些情況下會導致事務日誌空間被占滿的現象為:
在執行增刪改語句(產生事務日誌)的過程中提示,The transaction log for database '***' is full e to 'REPLICATION'(資料庫「***」的事務日誌已滿,原因為「REPLICATION」).
CDC以及復制的基本原理粗略地講,對於日誌的使用步驟如下:
1,每當基礎表(開啟了CDC或者replication的表)產生事務性操作(增刪改)之後,對應的事務日誌寫入日誌文件,
2,此時的日誌被狀態被標記為Replication,也即處於待復制狀態,這個活動狀態跟資料庫的還原模式無關,即便是簡單還原模式,
3,然後有後台進程來讀取這個日誌,根據事務日誌的內存寫入目標表,
這個目標對於cdc來說是記錄數據變化的系統表,
對於replication來說是寫入distribution這個庫
4,步驟3完成之後,事務日誌被標記為正常狀態,如果是簡單還原模式,被後台進程解析過的事務日誌被截斷,可以重用
如果上述中間的第三個步驟出現問題,也即後台進程無法解析日誌後釋放可用的日誌空間,再次往資料庫中寫入操作,就會出現:資料庫「TestDB」的事務日誌已滿,原因為「REPLICATION」的情況