解决事务日志已满的问题(错误 9002)
本主題討論對已滿事務(wù)日志可以采取的幾種應(yīng)對措施,并就以后如何避免出現(xiàn)已滿事務(wù)日志給出建議。如果事務(wù)日志已滿,則 SQL Server 數(shù)據(jù)庫引擎會發(fā)出 9002 錯(cuò)誤。當(dāng)數(shù)據(jù)庫聯(lián)機(jī)或恢復(fù)時(shí),日志可能會滿。如果數(shù)據(jù)庫聯(lián)機(jī)時(shí)日志已滿,則數(shù)據(jù)庫保持聯(lián)機(jī)狀態(tài),但是只能進(jìn)行讀取而不能更新。如果恢復(fù)過程中日志已滿,則數(shù)據(jù)庫引擎將數(shù)據(jù)庫標(biāo)記為 RESOURCE PENDING。不管哪種情況,都需要用戶執(zhí)行操作才能使日志空間可用。
| 注意 |
|---|
|
一般來說,事務(wù)日志用盡磁盤空間后,仍可以在只讀模式下訪問數(shù)據(jù)庫。但是,啟用快照隔離級別時(shí),如果您正在刪除堆(沒有聚集索引的表)中的行且事務(wù)日志在虛影行的日志記錄持久化前填充,則數(shù)據(jù)庫將脫機(jī)。如果出現(xiàn)這種情況,數(shù)據(jù)庫將自動重新啟動,進(jìn)行完全恢復(fù)后再聯(lián)機(jī)。 |
應(yīng)對已滿事務(wù)日志
正確應(yīng)對已滿事務(wù)日志在某種程度上取決于導(dǎo)致日志已滿的情況。若要在給定情況下查找阻止日志截?cái)嗟脑?,請使?strong>sys.database目錄視圖的log_reuse_wait列和log_reuse_wait_desc列。有關(guān)詳細(xì)信息,請參閱sys.databases (Transact-SQL)。有關(guān)延遲日志截?cái)嗟囊蛩氐恼f明,請參閱可能延遲日志截?cái)嗟囊蛩亍?/p>
| 重要提示 |
|---|
|
如果數(shù)據(jù)庫在恢復(fù)過程中出現(xiàn) 9002 錯(cuò)誤,則在解決此問題后,可使用 ALTER DATABASEdatabase_nameSET ONLINE 恢復(fù)數(shù)據(jù)庫。 |
應(yīng)對已滿事務(wù)日志的備選方法包括:
備份日志。
釋放磁盤空間以便日志可以自動增長。
將日志文件移到具有足夠空間的磁盤驅(qū)動器。
增加日志文件的大小。
在其他磁盤上添加日志文件。
完成或取消長時(shí)間運(yùn)行的事務(wù)。
下列部分介紹了這些備選方法。請選擇最適用于您情況的響應(yīng)。
備份日志
在完整恢復(fù)模式或大容量日志恢復(fù)模式下,如果最近尚未備份事務(wù)日志,則請立即進(jìn)行備份以免發(fā)生日志截?cái)唷H绻麖奈磦浞萑罩荆瑒t必須創(chuàng)建兩個(gè)日志備份,以允許數(shù)據(jù)庫引擎將日志截?cái)嗟缴洗蔚膫浞蔹c(diǎn)。截?cái)嗳罩究舍尫趴臻g以供新的日志記錄使用。若要防止日志再次填滿,請經(jīng)常執(zhí)行日志備份。
創(chuàng)建事務(wù)日志備份
| 重要提示 |
|---|
|
如果數(shù)據(jù)庫被損壞,請參閱結(jié)尾日志備份。 |
如何備份事務(wù)日志 (SQL Server Management Studio)
如何創(chuàng)建事務(wù)日志備份 (Transact-SQL)
SqlBackup(SMO)
釋放磁盤空間
您可以通過刪除或移動其他文件的方法來釋放包含數(shù)據(jù)庫事務(wù)日志文件的磁盤驅(qū)動器上的磁盤空間。釋放磁盤空間后,恢復(fù)系統(tǒng)將自動擴(kuò)大日志文件。
將日志文件移至其他磁盤
如果在當(dāng)前包含日志文件的驅(qū)動器上無法釋放足夠的磁盤空間,請考慮將該文件移至空間充足的其他驅(qū)動器上。
| 重要提示 |
|---|
|
日志文件決不要放在壓縮文件系統(tǒng)中。 |
移動日志文件
移動數(shù)據(jù)庫文件
增加日志文件的大小
如果日志磁盤上具有可用空間,則可以增加日志文件的大小。日志文件的最大大小是每個(gè)日志文件 2 TB。
增加文件大小
如果禁用自動增長,數(shù)據(jù)庫處于聯(lián)機(jī)狀態(tài),并且磁盤上有足夠的可用空間,則可采用以下方法之一:
手動增加文件大小以生成單個(gè)增量。
使用 ALTER DATABASE 語句啟用自動增長以針對 FILEGROWTH 選項(xiàng)設(shè)置非零增量。
| 注意 |
|---|
|
不管哪種情況,如果已達(dá)到當(dāng)前大小限制,則應(yīng)增加 MAXSIZE 值。 |
在其他磁盤上添加日志文件
使用 ALTER DATABASE <database_name> ADD LOG FILE,向具有足夠空間的其他磁盤上的數(shù)據(jù)庫中添加新日志文件。
添加日志文件
添加和刪除數(shù)據(jù)文件和事務(wù)日志文件(Transact-SQL)
如何向數(shù)據(jù)庫中添加數(shù)據(jù)或日志文件 (SQL Server Management Studio)
標(biāo)識和管理長時(shí)間運(yùn)行的事務(wù)
有關(guān)詳細(xì)信息,請參閱管理長時(shí)間運(yùn)行的事務(wù)。
請參閱
參考
ALTER DATABASE (Transact-SQL)
sp_add_log_file_recover_suspect_db (Transact-SQL)
概念
管理事務(wù)日志文件的大小
創(chuàng)建事務(wù)日志備份
可能延遲日志截?cái)嗟囊蛩?br />
恢復(fù)模式概述
事務(wù)日志概述
使用事務(wù)日志備份
其他資源
管理事務(wù)日志
總結(jié)
以上是生活随笔為你收集整理的解决事务日志已满的问题(错误 9002)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络理解(一):滤波器的意义
- 下一篇: 缓存是新的内存