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:
- Sie berechnet einen Wert neu, der in der Spalte „previous_block_hash“ der Zeile gespeichert ist.
- Sie überprüft, ob der neu berechnete Wert dem Wert entspricht, der aktuell in der Spalte „previous_block_hash“ gespeichert ist.
- 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.
- 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 vorhandensys.database_ledger
ist. Andernfalls überprüft er alle Tabellenhashes, die in der table_hashes Spalte von , mit Ausnahme vonsys.database_ledger
Tabellenhashes für nicht vorhandene (verworfene) Tabellen vorhanden sind. Beim Überprüfen eines Tabellenhashs für eine Ledger-Tabelle wird die gespeicherte Prozedur:- Ü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. - Ü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.
- Ü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
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_ledger
verwiesen 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.