寫滿交易記錄疑難排解 (錯誤 9002)
本主題將討論對於寫滿交易記錄的可能回應,並建議將來可採用的避免方法。當交易記錄寫滿時,SQL Server Database Engine 就會發出 9002 錯誤。此記錄可能會在資料庫處於線上或復原狀態時填滿。如果此記錄是在資料庫處於線上狀態時填滿,資料庫會保持線上狀態,不過只能讀取而無法更新資料庫。如果此記錄是在復原期間填滿,則 Database Engine 會將資料庫標示為 RESOURCE PENDING。不論是哪一種情況,使用者都必須採取動作,以便提供足夠的記錄空間。
寫滿交易記錄的回應
寫滿交易記錄的適當回應會部分根據導致記錄填滿的條件而定。若要探索指定情況下無法進行記錄截斷的原因,請使用 sys.database 目錄檢視的 log_reuse_wait 和 log_reuse_wait_desc 資料行。如需詳細資訊,請參閱<sys.databases (Transact-SQL)>。如需可能延遲記錄截斷之其他因素的描述,請參閱<可能會延遲記錄截斷的因素>。
重要事項 |
---|
如果發生 9002 錯誤時資料庫處於復原狀態,請在解決問題後,使用 ALTER DATABASE database_name SET ONLINE 來復原資料庫。 |
寫滿交易記錄的替代回應方式包括:
備份記錄。
釋出磁碟空間,使記錄可以自動成長。
將記錄檔移動到空間足夠的磁碟機。
增加記錄檔的大小。
在不同的磁碟上加入記錄檔。
完成或刪除長時間執行的交易。
這些替代方式將於下列各節中討論。請選擇最適合您情況的回應。
備份記錄
在完整復原模式或大量記錄復原模式下,如果最近尚未備份交易記錄,備份可能就是阻止記錄截斷的主因。如果記錄從未備份過,您就必須建立兩個記錄備份,以便讓 Database Engine 將記錄截斷至上次備份的時間點。截斷記錄可針對新記錄檔的記錄釋出空間。若要防止記錄檔再度被填滿,請經常備份記錄檔。
建立交易記錄備份
重要事項 |
---|
如果資料庫已損毀,請參閱<結尾記錄備份>。 |
釋出磁碟空間
您可以透過刪除或移動其他檔案,在包含資料庫交易記錄檔的磁碟機上釋出磁碟空間。釋出的磁碟空間會讓復原系統自動加大記錄檔。
將記錄檔移至不同的磁碟
增加記錄檔的大小
如果記錄磁碟上還有可用空間,您就可以增加記錄檔的大小。記錄檔大小的最大值是每個記錄檔 2 TB。
增加檔案大小
如果已停用自動成長、資料庫在線上,而且磁碟上有足夠的可用空間,請執行下列其中一項動作:
手動增加檔案大小以產生單一成長遞增。
使用 ALTER DATABASE 陳述式,設定 FILEGROWTH 選項的非零成長遞增,藉以開啟自動成長。
[!附註]
無論是哪一種情況,如果已達到目前的大小限制,都需增加 MAXSIZE 值。
在不同的磁碟上加入記錄檔
使用 ALTER DATABASE <database_name> ADD LOG FILE,在含有足夠空間的不同磁碟上加入資料庫的新記錄檔。
加入記錄檔
加入和刪除資料與交易記錄檔 (Transact-SQL)
識別並管理長時間執行的交易
如需詳細資訊,請參閱<管理長時間執行的交易>。