共用方式為


iLog 介面 (txlogpub.h)

提供一般低階記錄功能。

Common Log File System (CLFS) ,提供 ILog 所提供的超集功能。

繼承

ILog 介面繼承自 IUnknown 介面。 ILog 也有下列類型的成員:

方法

ILog 介面具有這些方法。

 
ILog::AppendRecord

將新記錄寫入記錄的結尾。
ILog::Force

強制記錄檔的內容到磁碟,至少會透過指定的 LSN。
ILog::GetLogLimits

擷取記錄檔目前界限的相關信息。
ILog::ReadRecord

從記錄檔讀取記錄。
ILog::ReadRecordPrefix

從記錄檔讀取記錄的初始部分。
ILog::SetAccessPolicyHint

提供有關將讀取記錄之模式的實作提示。
ILog::TruncatePrefix

會擲回記錄的指定前置詞,使其無法再擷取。

備註

WAL 是特定應用程式用來實作不可部分完成和隔離交易的技術,例如資料庫管理系統。 這項技術牽涉到在您進行這些變更之前,先將應用程式的資源變更記錄寫入記錄。 如此一來,如果需要變更即可還原,例如,如果交易失敗或中斷。 為了讓應用程式針對系統當機或電源故障等中斷提供健全的交易,記錄實作必須提供強制記錄的方法;也就是說,若要確保先前寫入的記錄位於磁碟上,再繼續進行。

寫入使用 ILog 的記錄是循序作業;也就是說,新記錄一律會附加至記錄的結尾。 附加至記錄的每個記錄都會指派記錄序號 (LSN) ,這是稍後可用來擷取記錄的數值標識碼。 數據類型 LSN 是 LARGE_INTEGER的 typedef,這是帶正負號的 64 位值;不過, ILog 只會使用 LSN 搭配非負值。 此外,LSN 必須符合下列條件:

  • LSN 會以單調方式增加;如果記錄 B 在記錄 A 之後寫入記錄,則記錄 B 的 LSN 必須大於記錄 A 的 LSN。
  • 零和 MAXLSN的值 (0x7FFFFFFFFFFFFFFF) 絕對不能當做記錄的 LSN 使用,因為它們對 ILog 的某些方法有特殊意義。
除了此處的條件以外,不應該假設 ILog 實作如何指派 LSN。 特別是,假設記錄會被指派 LSN 的循序值並不安全。

將記錄附加至記錄之後,可能無法修改。 不過,當不再需要先前寫入的記錄時,例如已認可的交易中變更的記錄, ILog 支援截斷記錄。 如此一來,可能會重複使用用於非必要記錄的磁碟空間。 截斷記錄包含刪除 LSN 小於指定值的所有記錄。

作為效能優化, ILog 的某些實作可能會緩衝記憶體中的記錄,直到強制記錄為止。 如果是這種情況,您就必須考慮錯誤控制和復原。 請考慮下列情況:

  1. 記錄 A 會附加至記錄,但不會強制記錄檔。 ILog 實作會將記錄複製到記憶體中的緩衝區,並傳回成功程序代碼。
  2. 記錄 B 會附加至記錄, 而 ILog 實作決定強制記錄到磁碟。 這是因為呼叫端要求強制記錄,或因為記憶體緩衝區已滿。 不過,寫入作業會失敗,例如磁碟空間不足。
在此情況下, ILog 實作會不適當地讓其他記錄附加至記錄,除非它可以保證傳回成功程式代碼的所有記錄都會先寫入磁碟。 錯誤控制的其中一個可能方法是在發生這種情況時,將記錄檔釘選在錯誤狀態,永久不允許對記錄實例進行其他寫入。 不會強制每個附加記錄的記錄到磁碟的呼叫端應該了解這種情況可能發生,而且能夠適當地處理它。

ILog 檔案型實作

Windows 作業系統提供 ILog 的檔案型實作,可讓您建立適合在檔案上進行預先寫入記錄的記錄。 記錄會使用檔案作為迴圈緩衝區,讓未使用的空間可以重複使用。 這也可能會增加記錄已滿時可能需要容納其他記錄的檔案大小。 記錄檔的變更會以不可部分完成的方式進行,如此一來,當機之後,可能會復原記錄的內容。 此實作會使用記憶體中的緩衝區來附加記錄檔記錄。 因此,除非呼叫端要求強制記錄,否則 當 ILog::AppendRecord 方法傳回時,不保證記錄會寫入磁碟。

使用下列 CLSID 來建立檔案型記錄的實例, (請參閱 CoCreateInstance) :

CLSID_SimpleFileBasedLog ({E16C0593-128F-11D1-97E4-00C04FB9618A} ) 。

ILog 的檔案型實作也支援 IFileBasedLogInitIPersistFile 介面。 使用 IFileBasedLogInit::InitNew 建立新的記錄檔。 使用 IPersistFile::Load 開啟現有的記錄檔。

此實作會使用簡單的錯誤控制原則。 如果有任何一種方法因為文件系統層級發生錯誤而失敗,其中包含磁碟完整錯誤,記錄檔會以錯誤狀態釘選。 這可防止用戶端將其他記錄附加至檔案,或讀取可能不正確的記錄。 若要繼續使用記錄檔,您必須建立記錄檔的新實例。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 txlogpub.h

另請參閱

IFileBasedLogInit