簡體   English   中英

SQL Server設置最大文件大小導致事務失敗

[英]Sql Server Setting max file size lead to faile transactions

我有一個日志文件大小為700 MB的數據庫。 現在,我將其最大文件大小固定為1 GB。 當達到1 GB時,事務失敗,原因是“數據庫的事務日志已滿。要了解為什么無法重用日志中的空間,請參閱sys.databases中的log_reuse_wait_desc列”

如果我取消選中日志文件的自動增長,則情況相同。

當我檢查sys.databases中的log_reuse_wait_desc列時,它說“ Active_Transaction”。

我不明白為什么Sql server沒有保持最大文件大小限制,為什么它不能刪除舊日志或類似的東西來保持最大文件大小。 它是如何工作的。

我想要的是在任何情況下都將日志文件的大小限制為不超過1 GB。

這里需要考慮幾件事,尤其是如果您想將日志文件的大小限制為1GB。

  1. 如前所述,您需要了解三種恢復模型之間的區別。 使用完整恢復模型時,進行日志備份是一項關鍵任務。 但是,這只是問題的一部分。 日志備份只會截斷日志的非活動部分,因此,事務可能會用1GB +的數據填充日志文件,然后您現在所處的位置...即使您處於簡單的恢復模式(日志備份對您沒有幫助!)。
  2. 在理想情況下,由於此問題,您不會以這種方式限制日志文件。 如果可能的話,您希望允許它自動增長,因此從理論上講,它可以填充磁盤。
  3. 事務日志管理本身就是一門科學。 金佰利特里普對如何管理事務日志吞吐量一些非常好的建議在這里
  4. 了解VLF可以使您更好地管理事務日志,並有助於更好地按比例分配大型事務日志文件。
  5. 如果在閱讀完所有內容之后,仍然需要限制事務日志的增長,那么您將需要考慮批量更新大型結果集。 這樣,您可以一次更新1000行,這意味着僅1000條記錄被寫入日志。 SQL Server使用預寫日志記錄 ,因此為了完成事務,首先需要在事務日志中有足夠的空間來寫入所有詳細信息。 如果使用簡單的恢復模型,則該預寫日志將自動被截斷,這意味着您無需備份日志。 因此,一次寫入1000條記錄(例如)所產生的問題要比插入1,000,000條巨大的記錄(例如)少

Redgate提供了免費的電子書來幫助您!

編輯:ps我剛剛讀過您的評論...如果您處於完全恢復模式,則必須進行日志備份,否則sql server將無法從日志中恢復空間,並且將繼續寫入導致其的日志擴大! 但是請注意,您必須具有完整備份,事務日志備份才能生效。 如果沒有初始還原點(即完整備份),SQL Server將無法備份該日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM