Freigeben über


Wann sollte das transaktionsbasierte NTFS verwendet werden?

Eine Anwendung kann transaktionales NTFS (TxF) verwenden, um die Integrität von Daten auf dem Datenträger bei unerwarteten Fehlerbedingungen beizubehalten. Im Allgemeinen sollte eine Anwendung die Verwendung von TxF in Betracht ziehen, wenn die Anwendung Dateien leert und andere Techniken verwendet, um die Datenintegrität zu gewährleisten. TxF kann den Fehlerbehandlungscode der Anwendung verbessern und vereinfachen und gleichzeitig die Fehlerwiederherstellung und Zuverlässigkeit verbessern. Die folgenden Abschnitte in diesem Thema enthalten Beispiele für Szenarien für die Verwendung von TxF.

Aktualisieren einer Datei

Das Aktualisieren einer Datei ist ein gängiger und in der Regel einfacher Vorgang. Wenn das System oder die Anwendung jedoch fehlschlägt, während eine Anwendung Informationen auf einem Datenträger aktualisiert, kann das Ergebnis katastrophal sein, da die Benutzerdaten durch einen teilweise abgeschlossenen Dateiaktualisierungsvorgang beschädigt werden können. Robuste Anwendungen führen häufig komplexe Sequenzen von Dateikopien und Dateibenennungen durch, um sicherzustellen, dass Daten nicht beschädigt werden, wenn ein System ausfällt.

TxF erleichtert es einer Anwendung, Dateiupdatevorgänge vor System- oder Anwendungsfehlern zu schützen. Um eine Datei sicher zu aktualisieren, öffnet die Anwendung die Datei im Transaktionsmodus, nimmt die erforderlichen Updates vor und führt dann einen Commit für die Transaktion aus. Wenn das System oder die Anwendung während des Dateiupdates fehlschlägt, stellt TxF die Datei automatisch in den Zustand zurück, den sie vor Beginn des Dateiupdates hatte, wodurch dateibeschädigungen vermieden werden.

Updates mit mehreren Dateien

TxF ist noch wichtiger, wenn ein einzelner logischer Vorgang mehrere Dateien betrifft. Wenn Sie beispielsweise ein Tool verwenden möchten, um eine der HTML- oder ASP-Seiten auf einer Website umzubenennen, würde ein gut entworfenes Tool auch alle Links korrigieren, um den neuen Dateinamen zu verwenden. Ein Fehler während dieses Vorgangs lässt die Website jedoch in einem inkonsistenten Zustand zurück, wobei einige der Links weiterhin auf den alten Dateinamen verweisen. Indem der Dateibenennungsvorgang und der Linkfixierungsvorgang eine einzelne Transaktion sind, stellt TxF sicher, dass die Dateibenennung und die Verknüpfungskorrektur erfolgreich sind oder als einzelner Vorgang fehlschlagen.

Konsistente gleichzeitige Updates

TxF isoliert gleichzeitige Transaktionen. Wenn eine Anwendung eine Datei für einen Transaktionslesevorgang öffnet, während eine andere Anwendung dieselbe Datei für ein Transaktionsupdate geöffnet hat, isoliert TxF die Auswirkungen der beiden Transaktionen voneinander. Anders ausgedrückt: Der Transaktionsleser zeigt immer eine einzelne, konsistente Version der Datei an, auch wenn diese Datei gerade von einer anderen Transaktion aktualisiert wird.

Eine Anwendung kann diese Funktionalität verwenden, damit Kunden Dateien anzeigen können, während andere Kunden Updates vornehmen. Beispielsweise kann ein Transaktionswebserver eine einzelne, konsistente Ansicht von Dateien bereitstellen, während ein anderes Tool diese Dateien gleichzeitig aktualisiert.

Hinweis

TxF unterstützt keine gleichzeitigen Updates durch mehrere Writer in verschiedenen Transaktionen. TxF unterstützt nur einen einzelnen Writer mit mehreren gleichzeitigen und konsistenten Readern.

 

Koordination mit anderen Transacted Resource Managern

Transaktionen, die mit transaktionsbasierten Dateisystemen verwendet werden, können auch mit der transaktionierten Registrierung verwendet werden. Updates für die Datei und die Registrierung werden mit einer einzelnen Transaktion koordiniert.

Mithilfe von DTC-Transaktionen ( Distributed Transaction Coordinator ) oder System.Transactions können Aktualisierungen, die an SQL, MSMQ und anderen Transaktionsressourcen vorgenommen werden, mit transaktionsierten Dateiupdates koordiniert werden. Weitere Informationen finden Sie unter IKernelTransaction von DTC.

Nicht unterstützte Szenarien

Die folgenden Transaktionsszenarien werden von TxF nicht unterstützt:

  • Transaktionen auf Netzwerkvolumes, z. B. auf Dateifreigaben. TxF wird von den CIFS/SMB-Protokollen nicht unterstützt.
  • Transaktionen auf einem anderen Dateisystem als NTFS.
  • Transaktionierte Vorgänge für Dateien, die durch clientseitiges Zwischenspeichern zwischengespeichert werden.
  • Dateizugriff mithilfe von Objekt-IDs.
  • Alle freigegebenen Writer-Szenarien.
  • Alle Situationen, in denen eine Datei für einen längeren Zeitraum (Tage oder Wochen) geöffnet wird.