Freigeben über


CLFS-Unterstützung für die Archivierung

Common Log File System (CLFS) unterstützt die Archivierung für dedizierte Protokolle, indem ein Archivschwanz verwaltet wird. Wenn Sie ClfsCreateLogFile aufrufen, um ein dediziertes Protokoll zu erstellen, können Sie das FILE_ATTRIBUTE_ARCHIVE-Flag des fFlagsAndAttributes-Parameters festlegen, um anzugeben, dass CLFS ein Archivende für das Protokoll verwalten soll. Ein Protokoll, für das CLFS einen Archivschwanz verwaltet, wird als nicht kurzlebiges Protokoll bezeichnet.

Angenommen, Sie führen Transaktionen für eine Datenbank aus, und jede Transaktion verfügt über mehrere Updates, die durch Protokolldatensätze beschrieben werden. Nachdem eine bestimmte Transaktion committet und in stabilen Speicher geschrieben wurde, benötigen Sie möglicherweise nicht mehr die Protokolldatensätze, die diese Transaktion beschreiben. Das heißt, die Protokolldatensätze sind bei einem Systemausfall während der Neustartwiederherstellung nicht erforderlich. Wenn jedoch das stabile Speichermedium, das die Datenbank enthält, fehlschlägt und die Datenbank nicht kürzlich auf einem anderen Medium archiviert wurde, können die Datenbankupdates verloren gehen.

Im vorherigen Absatz wird die Archivierung von Datenbankdatensätzen beschrieben, aber in anderen Szenarien sollten Sie Protokolldatensätze archivieren. In beiden Fällen liegt die Archivierung in der Verantwortung der Clients (Ihrer Software). Sie können die von Ihnen durchgeführte Archivierung nachverfolgen, indem Sie den Archivschwanz des Protokolls festlegen. Das Archivende ist die Protokollsequenznummer (LSN) des ältesten Datensatzes, für den die Archivierung noch nicht abgeschlossen ist.

Ein nicht kurzlebiges Protokoll weist tatsächlich zwei Tails auf: einen, der durch den Basis-LSN und einen durch den Archivschwanz gekennzeichnet ist. Sie können die beiden Tails nach Bedarf positionieren, indem Sie ClfsAdvanceLogBase (oder ClfsWriteRestartArea) und ClfsSetArchiveTail aufrufen. In der Regel verweist der Basis-LSN auf den ältesten Datensatz, der für das Transaktionsrollback oder den Neustart der Wiederherstellung noch erforderlich wäre, und der Archivschwund verweist auf den ältesten Datensatz, für den keine Archivierung durchgeführt wurde. Beachten Sie, dass der Archivschwund kleiner als der Basis-LSN oder größer als der Basis-LSN sein kann.

Die Basis-LSN und der Archivschwund sind wichtig, wenn Sie ClfsReadNextLogRecord wiederholt aufrufen, um eine Kette von Datensätzen zu lesen, die durch vorherige LSNs, Rückgängig-nächste LSNs oder Benutzer-LSNs verknüpft sind. ClfsReadNextLogRecord liest keinen Datensatz, dessen LSN kleiner als der Archivschwund und der Basis-LSN ist. Es liest jedoch einen Datensatz, dessen LSN zwischen dem Archivende und dem Basis-LSN liegt. Weitere Informationen zu den folgenden Datensatzketten finden Sie unter Lesen von Datensätzen aus einem CLFS-Stream.