寫滿交易記錄疑難排解 (錯誤 9002)

更新: 2006 年 4 月 14 日

本主題將討論對於寫滿交易記錄的可能回應,並建議將來可採用的避免方法。當交易記錄寫滿時,SQL Server Database Engine 就會發出 9002 錯誤。此記錄可能會在資料庫處於線上或復原狀態時填滿。如果此記錄是在資料庫處於線上狀態時填滿,資料庫會保持線上狀態,不過只能讀取而無法更新資料庫。如果此記錄是在復原期間填滿,則 Database Engine 會將資料庫標示為 RESOURCE PENDING。不論是哪一種情況,使用者都必須採取動作,以便提供足夠的記錄空間。

寫滿交易記錄的回應

寫滿交易記錄的適當回應會部分根據導致記錄填滿的條件而定。若要探索指定情況下無法進行記錄截斷的原因,請使用 sys.database 目錄檢視的 log_reuse_waitlog_reuse_wait_desc 資料行。如需詳細資訊,請參閱<sys.databases (Transact-SQL)>。如需可能延遲記錄截斷之其他因素的描述,請參閱<會造成延遲記錄截斷的因素>。

ms175495.note(zh-tw,SQL.90).gif重要事項:
如果發生 9002 錯誤時資料庫處於復原狀態,請在解決問題後,使用 ALTER DATABASE database_name SET ONLINE 來復原資料庫。

寫滿交易記錄的替代回應方式包括:

  • 備份記錄。
  • 釋出磁碟空間,使記錄可以自動成長。
  • 將記錄檔移動到空間足夠的磁碟機。
  • 增加記錄檔的大小。
  • 在不同的磁碟上加入記錄檔。
  • 完成或刪除長時間執行的交易。

這些替代方式將於下列各節中討論。請選擇最適合您情況的回應。

ms175495.note(zh-tw,SQL.90).gif附註:
強制記錄截斷會中斷記錄鏈結,並且會讓資料庫在下次完整資料庫備份之前容易遭受攻擊。因此,SQL Server 的未來版本中將會從 BACKUP 陳述式移除 TRUNCATE_ONLY 選項。請避免在新的開發工作中使用這個選項,並請規劃修改目前使用這個選項的應用程式。

備份記錄

在完整復原模式或大量記錄復原模式下,如果最近尚未備份交易記錄,備份可能就是阻止記錄截斷的主因。如果記錄從未備份過,您就必須建立兩個記錄備份,以便讓 Database Engine 將記錄截斷至上次備份的時間點。截斷記錄可針對新記錄檔的記錄釋出空間。若要防止記錄檔再度被填滿,請經常備份記錄檔。

建立交易記錄備份

ms175495.note(zh-tw,SQL.90).gif重要事項:
如果資料庫已損毀,請參閱<結尾記錄備份>。

釋出磁碟空間

您可以透過刪除或移動其他檔案,在包含資料庫交易記錄檔的磁碟機上釋出磁碟空間。釋出的磁碟空間會讓復原系統自動加大記錄檔。

將記錄檔移至不同的磁碟

如果無法在目前包含記錄檔的磁碟機上,釋出足夠的磁碟空間,請考慮將檔案移動到有足夠空間的其他磁碟機。

ms175495.note(zh-tw,SQL.90).gif重要事項:
記錄檔絕不可放在壓縮檔案系統上。

移動記錄檔

增加記錄檔的大小

如果記錄磁碟上還有可用空間,您就可以增加記錄檔的大小。

增加檔案大小

如果已停用自動成長、資料庫在線上,而且磁碟上有足夠的可用空間,請執行下列其中一項動作:

  • 手動增加檔案大小以產生單一成長遞增。
  • 使用 ALTER DATABASE 陳述式,設定 FILEGROWTH 選項的非零成長遞增,藉以開啟自動成長。
ms175495.note(zh-tw,SQL.90).gif附註:
無論是哪一種情況,如果已達到目前的大小限制,都需增加 MAXSIZE 值。

在不同的磁碟上加入記錄檔

使用 ALTER DATABASE <database_name> ADD LOG FILE,在含有足夠空間的不同磁碟上加入資料庫的新記錄檔。

加入記錄檔

識別並管理長時間執行的交易

如需詳細資訊,請參閱<管理長時間執行的交易>。

請參閱

概念

建立交易記錄備份
會造成延遲記錄截斷的因素
復原模式概觀
交易記錄簡介
使用交易記錄備份

其他資源

ALTER DATABASE (Transact-SQL)
管理交易記錄
sp_add_log_file_recover_suspect_db (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

新增內容:
  • 加入寫滿交易記錄對資料庫可用性影響的相關描述。
  • 加入使用 sys.database 來識別寫滿交易記錄之原因的相關資訊。
  • 從先前<磁碟空間不足疑難排解>主題中整合與解決 9002 錯誤相關的資訊。