資料庫的事務日誌已滿
1、你設置了日誌文件的最大數,資料庫的恢復模式是完整恢復模式,所有的針對資料庫的改動都會記錄到日誌,不僅僅是你的改動資料庫,資料庫本身的操作也有記錄到日誌,所以,日誌文件才會不斷增長。
2、那是因為大部分的電腦上的資料庫,基本沒怎麼變過,但生產用的資料庫經常變動,所以日誌記錄也變得巨大,我見過資料庫200MB,但是日誌文件50GB,因為本來資料庫有10GB,因為測試需要刪除了大部分的數據,結果導致日誌文件增長到了50GB。
3、定時備份日誌並收縮日誌文件。
4、通過備份日誌,並收縮日誌文件,這個語句你自己網路。
5、日誌是一個以事務編號連續的記錄,比如,我第一次備份的日誌事務編號為1-1000,那麼日誌就會被截斷,並從1001開始,之後的日誌備份就從1001開始了,所以,初始備份一直到最後一次備份都不能刪除,否則使用日誌恢復時會出現問題。
2. 資料庫事物日誌已滿這個問題怎麼解決
先提供一種復雜的方法壓縮日誌及資料庫文件如下:
1.清空日誌
mp transaction 庫名 with no_log
2.截斷事務日誌:
backup log 資料庫名 with no_log
3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了
也可以用sql語句來完成
--收縮資料庫
dbcc shrinkdatabase(客戶資料)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles
dbcc shrinkfile(1)
4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離資料庫:
企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除log文件
c.附加資料庫:
企業管理器--伺服器--資料庫--右鍵--附加資料庫
此法將生成新的log,大小隻有500多k
或用代碼:
下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。
a.分離
e x e c sp_detach_db @dbname = 'pubs'
b.刪除日誌文件
c.再附加
e x e c sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\program files\microsoft sql server\mssql\data\pubs.mdf'
5.為了以後能自動收縮,做如下設置:
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--sql語句設置方式:
e x e c sp_dboption '資料庫名', 'autoshrink', 'true'
6.如果想以後不讓它日誌增長得太大
企業管理器--伺服器--右鍵資料庫--屬性--事務日誌
--將文件增長限制為xm(x是你允許的最大數據文件大小)
--sql語句的設置方式:
alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20)
3. 資料庫的事務日誌已滿要怎麼辦!!!急!
修改日誌文件
alter database dbname
modify file (name=日誌文件的邏輯名稱, maxsize=50mb )
go
壓縮資料庫
dbcc shrinkdatabase(dbname)
4. 為什麼有時候資料庫事務日誌滿了,不能截斷日誌
有兩種情況,可能出現這個問題。一是應用系統給SQL Server發送了一個用戶自定義事務,一直未提交,這個最早活躍事務阻礙系統截斷日誌。二是客戶端向SQL Server發送了一個修改數量大的事務,清日誌時,該事務還正在執行之中,此事務所涉及的日誌只能等到事務結束後,才能被截掉。
對於第一種情況,只要督促用戶退出應用或者提交事務,系統管理員便可清掉日誌。因為給SQL Server發送Dump transaction with no-log或者with truncate-only,它截掉事務日誌的非活躍部分。所謂非活躍部分是指伺服器檢查點之間的所有已提交或回退的事務。而從最早的未提交的事務到最近的日誌記錄之間的事務日誌記錄被稱為活躍的。從此可以看明,打開的事務能致使日誌上漲,因為在最早活躍事務之後的日誌不能被截除。
對於第二種情況,道理也同上。只是在處理它時,需慎重從事。如果這個大事務已運行較長時間,應盡量想法擴大資料庫日誌空間,保證該事務正常結束。
5. 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;
6. 資料庫事務jeeps日誌已滿,原因為replication
在該資料庫名稱上右鍵,屬性,打開資料庫屬性對話框,選擇第二項「文件」,如下圖所示
選擇啟用自動增長,並修改其中文件增長幅度即可。
7. SQL server資料庫日誌滿了怎麼處理
一、刪除日誌文件。
二、手動收縮。操作如下:
1、在資料庫頁面中選擇「選項」;
8. 怎樣處理 SQL0964C 資料庫的事務日誌已滿.高分相送
你用的是循環日誌吧
原因,表中數據量過大,delete 時,會寫入日誌,但日誌容量過小。
方法: 增大日誌容量、數據量
或 減少一次的刪除數劇量,分多次刪除。
或 先drop table ..
再create table.. 這樣不寫日誌
9. sqlserver 事務日誌沒幾天就滿了
1.清空日誌 DUMP TRANSACTION 庫名 WITH NO_LOG
2.截斷事務日誌: BACKUP LOG 庫名 WITH NO_LOG
3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件 --選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 --選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 也可以用SQL語句來完成 --收縮資料庫 DBCC SHRINKDATABASE(庫名) --收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles DBCC SHRINKFILE(1)
4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離資料庫: 企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除LOG文件
c.附加資料庫: 企業管理器--伺服器--資料庫--右鍵--附加資料庫 此法將生成新的LOG,大小隻有500多K
或用代碼: 下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。
a.分離 EXEC sp_detach_db @dbname = '庫名'
b.刪除日誌文件
c.再附加 EXEC sp_attach_single_file_db @dbname = '庫名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\庫名.mdf'
5.為了以後能自動收縮,
做如下設置: 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮" --SQL語句設置方式: EXEC sp_dboption '庫名', 'autoshrink', 'TRUE'
6.如果想以後不讓它日誌增長得太大
企業管理器--伺服器--右鍵資料庫--屬性--事務日誌 --將文件增長限制為xM(x是你允許的最大數據文件大小) --SQL語句的設置方式:
alter database 庫名 modify file(name=邏輯文件名,maxsize=20)
10. 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
時才能進行。
注意:一般立成建立的資料庫默認屬性已設好,但碰到意外情況使資料庫屬性被更改,請用戶清空日誌後,檢查資料庫的以上屬性,以防事務日誌再次充滿。