Share via


基本 TxF 概念

讀取隔離

交易式 NTFS (TxF) 提供讀取認可的一致性。

交易寫入器是指以不屬於一般讀取權限但屬於一般寫入權限的任何許可權開啟的交易檔案控制代碼。 交易寫入器會檢視最新版的檔案,其中包含相同交易的所有變更。 每個檔案只能有一個交易寫入器。 交易寫入器一律會封鎖非交易寫入器,即使檔案是以共用寫入權限開啟也一樣。

交易讀取器是指以屬於泛型讀取權限一部分但不屬於一般寫入權限的任何許可權開啟的交易檔案控制代碼。 交易讀取器會檢視檔案控制碼開啟時所存在的已認可檔案版本。 交易讀取器會與交易寫入器的效果隔離。 這只會在檔案控制代碼的存留期間提供檔案的一致檢視,並封鎖非交易寫入器。

注意

當已開啟控制碼以修改 CreateFileTransacted 函 式時,不論系統是否要針對隔離和其他交易語意而將唯讀或未轉換成交易寫入器,該交易內的所有後續檔案都會開啟。 這表示,在開啟控制碼以進行唯讀存取時,控制碼不會在交易開始時收到檔案的檢視;它會接收檔案的作用中交易檢視。

在認可交易之前,非交易檔案控制代碼不會看到交易內所做的任何變更。 非交易檔案控制代碼會收到與交易讀取器類似的隔離檢視,但不同于交易讀取器,它會在交易寫入器認可交易時收到檔案更新。

隔離等級

TxF 提供讀取認可隔離。 這表示不會在交易外部看到檔案更新。 此外,如果在讀取交易內的檔案時多次開啟檔案,您可能會在每次後續開啟時看到不同的結果。 您第一次存取檔案時可用的檔案可能無法 (,因為它們已刪除) ,反之亦然。

交易式鎖定

在檔案上建立交易寫入器 會以交易方式鎖定 檔案。 交易鎖定檔案之後,嘗試修改交易鎖定交易外部的其他檔案系統作業將會失敗 並ERROR_SHARING_VIOLATION或 ERROR_TRANSACTIONAL_CONFLICT

下表摘要說明交易式鎖定。

目前開啟的檔案

嘗試開啟檔案

交易

非交易

讀者

讀取器/寫入器

讀者

讀取器/寫入器

交易讀取器

Yes

Yes

Yes

否2

交易讀取器/寫入器

Yes

否2

Yes

否2

非交易讀取器

Yes

Yes

Yes

Yes

非交易讀取器/寫入器

Yes

Yes

  1. 失敗並出現 ERROR_TRANSACTIONAL_CONFLICT
    2.失敗並出現 ERROR_SHARING_VIOLATION

如果您針對使用交易的修改開啟具名資料流程,則必須鎖定整個檔案。

除了交易式鎖定之外,也會套用一般 NTFS 檔案共用規則。

您必須平行考慮下列兩種檔案共用模式:

  • 交易式鎖定模式。
  • 一般檔案共用模式。

無論哪一種模式都比較嚴格,就是適用的模式。