在我的團隊ASP.NET應用程序的數據訪問層中,我通過使用.NET SQLClient對我們的數據庫運行存儲過程。增加新的代碼,允許對數據庫的插入操作後,我測試的代碼,並獲得了以下異常:數據庫中事務日誌已滿的潛在原因和解決方案
The transaction log for database 'DBName' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
我覈實,我從MS SQL Server中嘗試插入操作當收到同一消息管理工作室。我很擔心,因爲我最近添加了三個兩個觸發器兩個數據庫來執行基於插入和更新某些表的一些數據插入,並且我認爲可能我已經招致了無限循環或某種性質的事情。
但是,基於此問題的其他實例在線,它似乎不是通常由觸發器或旋轉查詢引起的問題。我查詢針對log_reuse_wait
和log_reuse_wait_desc
列和返回以下:
2 | LOG_BACKUP
此外,查詢SELECT [name], recovery_model_desc, log_reuse_wait_desc
返回:
FROM sys.databases
name | recovery_model_desc| log_reuse_wait_desc
DBName| FULL | LOG_BACKUP
在其中第一列是log_reuse_wait
,第二個是log_reuse_wait_desc
。 根據msdn上代碼的定義,我需要執行日誌備份,然後可以自動截斷日誌,從而允許對數據庫進行進一步的操作。這是一個正確的假設嗎?這是否可能是由錯誤編碼的觸發器引起的,或者更多是日常維護任務,由數據庫上的大量事務引起?
編輯:
查詢select type_desc, size, max_size from sys.database_files
回報:
type_desc | size | max_size
1| ROWS | 512 | -1
2| LOG | 64 | -1
你知道你對這個數據庫的備份策略嗎? – tschmit007
什麼「從sys.database_files中選擇type_desc,size,max_size」返回? – tschmit007
是的,這是文檔所說的,你需要做什麼。如果觸發器添加,更新或刪除,那麼將被記錄。如果觸發器不必要地添加,更新或刪除,那麼將不必要地記錄。問題是你需要一個完整的恢復模型嗎? – Paparazzi