sys.ledger_table_history (Transact-SQL)

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

Erfasst den kryptografisch geschützten Verlauf von Vorgängen in Ledgertabellen: Erstellen von Ledgertabellen, Umbenennen von Ledgertabellen oder Ledgersichten und Löschen von Ledgertabellen.

Weitere Informationen zu Datenbankledgers finden Sie unter Ledger.

Spaltenname Datentyp BESCHREIBUNG
object_id int Die Objekt-ID der Ledgertabelle.
schema_name sysname Der Name des Schemas, das die Ledgertabelle enthält. Wurde der Schemaname durch den Vorgang geändert, erfasst diese Spalte den neuen Schemanamen.
table_name sysname Der Name der Ledgertabelle. Wurde der Tabellenname durch den Vorgang geändert, erfasst diese Spalte den neuen Tabellennamen.
ledger_view_schema_name sysname Der Name des Schemas, das die Ledgersicht für die Ledgertabelle enthält. Wurde der Schemaname durch den Vorgang geändert, erfasst diese Spalte den neuen Schemanamen.
ledger_view_name sysname Der Name der Ledgersicht für die Ledgertabelle. Wurde der Sichtname durch den Vorgang geändert, erfasst diese Spalte den neuen Sichtnamen.
operation_type tinyint Der numerische Wert, der den Vorgangstyp angibt

0 = CREATE – Erstellen einer Ledgertabelle.
1 = DROP – Löschen einer Ledgertabelle.
2 = RENAME – Umbenennen einer Ledgertabelle.
3 = RENAME_VIEW – Umbenennen der Ledgersicht für eine Ledgertabelle.
operation_type_desc nvarchar(60) Beschreibung des Werts von „operation_type“ als Text.
transaction_id bigint Die Transaktion der ID, die den Vorgang in der Ledgertabelle enthalten hat. Sie identifiziert eine Zeile in sys.database_ledger_transactions.
sequence_number bigint Sequenznummer des Vorgangs innerhalb der Transaktion.

Berechtigungen

Erfordert die Berechtigung VIEW LEDGER CONTENT.

Beispiele

Sehen Sie sich die folgende Reihenfolge von Vorgängen für Ledgertabellen an.

  1. Ein Benutzer erstellt eine Ledgertabelle.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Ein Benutzer benennt die Ledgertabelle um.

    EXEC sp_rename 'Employees', 'Employees_Copy';
    
  3. Ein Benutzer benennt die Ledgersicht der Ledgertabelle um.

    EXEC sp_rename 'Employees_Ledger', 'Employees_Ledger_Copy';
    
  4. Ein Benutzer löscht die Ledgertabelle.

    DROP TABLE [Employees];
    

Mit der folgenden Abfrage werden „sys.ledger_table_history“ und „sys.database_ledger_transactions“ verknüpft, um den Änderungsverlauf für Spalten in einer Ledgertabelle zu erstellen, einschließlich der Uhrzeit der jeweiligen Änderung und des Namens des Benutzers, der die Änderung ausgelöst hat.

SELECT 
t.[principal_name]
, t.[commit_time]
, h.[schema_name] + '.' + h.[table_name] AS [table_name]
, h.[ledger_view_schema_name] + '.' + h.[ledger_view_name] AS [view_name]
, h.[operation_type_desc]
FROM sys.ledger_table_history h
JOIN sys.database_ledger_transactions t
ON h.transaction_id = t.transaction_id

Weitere Informationen