在命令參考手冊中的dump transaction with no_log條目下,有一條警告信息告訴你,你應該把這條命令作為沒有其它辦法時的最後一招才使用它。但是“最後一招”究竟是什麼意思呢?當你使用這條命令時會怎樣呢?那你應使用哪條命令來代替它呢?最後,若這條命令如此有問題,為什麼Sybase卻要提供它呢?
Sybase技術支持建議你定期的dump你的transaction log。你必須根據你的數據庫中記入日記的活動的量的大小以及你的數據庫的大小來決定dump的方式。有些地方按月dump transaction;有些地方每夜dump transaction。
注意:若你正運行SQL Server10.0,你可以用sp_thresholdaction在空間緊缺之前來自動dump tran;另外,此時Backup Server會保證在dump進行時,任務不會被掛起。請在你的SQL Server參考手冊中獲取更詳細的信息。這篇文章的剩余部分將適用於運行系統10以前版本SQL Server的領域。
若你從未dump transaction過,transactionlog將最終會滿。 SQLServer使用log(日志)是出於恢復目的的。 當log滿時,服務器將停止事物的繼續進行,因為服務器將不能將這些事物寫進日志,而服務器不能運行大多數的dump tran命令,因為SQL Server也需在日志中記錄這些命令。
這就是為什麼當其它dump tran命令不能執行時no_log可執行的原因。但是想一下dump transaction with no_log被設計執行的環境。所有對不做並發性檢查。
若你在對數據庫的修改發生時使用dump transaction with no_log,你就會冒整個數據庫崩潰的風險。在多數情況下,它們被反映成813或605錯誤。為了在數據庫被修改時,刪除transaction log中的不活躍部分可使用dump transaction with trancate_only。這條命令寫進transaction log時,並且它還做不要的並發性檢查。這兩條命令都有與其相關的警告,在命令參考手冊中會看到這些警告。請確保在使用其中任一條命令以前,你已理解這些警告和指示。 Syase提供dump transaction with no_log來處理某些非常緊迫的情況。為了盡量確保你的數據庫的一致性,你應將其作為“最後一招”。