來源:巨靈鳥軟件 作者:進銷存軟件 發布:2014/5/20 瀏覽次數:4829
1、事務日志文件
事務日志文件,擴展名為ldf,它是數據庫結構中非常重要卻又常被忽視的部分。它是用來記錄數據庫更新情況的文件,它可以記錄針對數據庫的任何操作,并將記錄的結果保存到獨立的文件中。對于每一次數據庫更新的過程,事務日志文件都有非常全面的記錄。根據這些記錄可以恢復數據庫更新前的狀態。
2、作用
出于性能上的考慮,SQL Server將用戶的改動存入緩存中,這些改變會立即寫入事務日志,但不會立即寫入數據文件。事物日志會通過一個標記點來確定某個事物是否已將緩存中的數據寫入數據文件。當SQL Server重啟后,它會查看日志中最新的標記點,并將這個標記點后面的事物記錄抹去,因為這些事物記錄并沒有真正的將緩存中的數據寫入數據文件。這可以防止那些中斷的交易修改數據文件。
舉個例子,在一個銀行系統中,某個用戶需要轉帳。這個轉帳作業主要是通過兩個步驟來完成。第一個步驟就是扣減用戶帳戶中的金額; 第二個步驟是把錢轉入到另外一個用戶那里,F在如果在轉帳的過程中,第一步成功了,但是第二個步驟因為某種原因出錯了。如用戶提供的帳戶名字與實際轉帳的帳戶名字不符,則第二個操作就會失敗。此時整個轉帳操作就會以失敗而告終。但是現在的問題是,第一個扣減的動作在數據庫中已經完成了。而實際卻是沒有轉帳成功,就造成了數據一致性的問題。實際過程中如果應用程序發出ROLLBACK 語句,或者數據庫引擎檢測到錯誤,就使用日志記錄回滾未完成的事務所做的修改。也就是說,當第二個操作失敗的話,應用程序要發出一個ROLLBACK 語句,利用事務日志回滾功能,恢復第一步的操作。也就是說,把扣減金額的操作進行恢復,從而實現數據的一致性。類似的應用,在數據庫開發過程中很頻繁。
3、事務日志的常見故障
一般情況下,在能夠容納兩次事務日志截斷之間發生的最大數量的事務時,事務日志的大小是穩定的,事務日志截斷由檢查點或者事務日志備份觸發。
然而,在某些情況下,事務日志可能會變得非常大,以致用盡空間或變滿。通常,在事務日志文件占盡可用磁盤空間且不能再擴展時,您將收到如下錯誤消息:
Error:9002, Severity:17, State:2
The log file for database ’%.*ls’ is full.
除了出現此錯誤消息之外,SQL Server 還可能因為缺少事務日志擴展空間而將數據庫標記為 SUSPECT。有關如何從此情形中恢復的其他信息,請參見 SQL Server 聯機幫助中的“磁盤空間不足”主題。
來源:巨靈鳥 歡迎分享本文