Freigeben über


sys.sp_verify_database_ledger (Transact-SQL)

Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL Managed Instance

Überprüft den Datenbankledger und die Tabellenledger. Die gespeicherte Prozedur für jede Zeile in der sys.database_ledger Ansicht:

  1. Sie berechnet einen Wert neu, der in der Spalte „previous_block_hash“ der Zeile gespeichert ist.
  2. Sie überprüft, ob der neu berechnete Wert dem Wert entspricht, der aktuell in der Spalte „previous_block_hash“ gespeichert ist.
  3. Enthält die angegebene Liste der Digests einen Digest für den Ledgerblock, den die Zeile darstellt, überprüft sie, ob der neu berechnete Wert dem Hashwert im Digest entspricht.
  4. Wenn ein Sachbuchtabellenname mithilfe des table_name Arguments angegeben wird, überprüft die gespeicherte Prozedur einen Tabellenhash für die angegebene Tabelle, falls sie in der spalte table_hashes vorhanden sys.database_ledgerist. Andernfalls überprüft er alle Tabellenhashes, die in der table_hashes Spalte von , mit Ausnahme von sys.database_ledgerTabellenhashes für nicht vorhandene (verworfene) Tabellen vorhanden sind. Beim Überprüfen eines Tabellenhashs für eine Ledger-Tabelle wird die gespeicherte Prozedur:
    1. Überprüft die Verlaufstabelle der Hauptbuchtabelle, um den Tabellenhash neu zu kompilieren, bei dem es sich um einen Hash aller Zeilen handelt, die von der Transaktion aktualisiert werden, die durch die aktuelle Zeile in sys.database_ledger der Hauptbuchtabelle dargestellt wird.
    2. Überprüft, ob der neu komputierte Tabellenhash mit dem Wert übereinstimmt, der in der spalte table_hashes sys.database_ledger für die angegebene Hauptbuchtabelle gespeichert ist.

Darüber hinaus überprüft die gespeicherte Prozedur alle nicht gruppierten Indizes mit der angegebenen Sachtabelle. Wenn keine Sachbuchtabelle angegeben ist, überprüft sie alle nicht gruppierten Indizes für jede vorhandene Sachtabelle, auf die in der spalte table_hashes in einer zeile von sys.database_ledgerverwiesen wird.

Weitere Informationen zum Datenbankledger finden Sie unter Ledger.

Transact-SQL-Syntaxkonventionen

Syntax

sp_verify_database_ledger
    [ @digests = ] 'digests'
    [ , [ @table_name = ] 'table_name' ]

Argumente

[ @digests = ] 'digests'

Ein JSON-Dokument mit einer Liste von Transaktionsdigesten, die jeweils durch Abfragen der sys.database_ledger_latest_digest Ansicht abgerufen wurden. Das JSON-Dokument muss mindestens einen Digest enthalten.

[ @table_name = ] 'table_name'

Der Name der Tabelle, die Sie überprüfen möchten.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Eine Zeile mit einer Spalte, die aufgerufen wird last_verified_block_id.

Berechtigungen

Erfordert die Berechtigung VIEW LEDGER CONTENT.