Freigeben über


sys.ledger_column_history (Transact-SQL)

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

Erfasst den kryptografisch geschützten Verlauf der folgenden Vorgänge für Spalten in Ledgertabellen: Hinzufügen, Umbenennen und Löschen von Spalten.

Weitere Informationen zum Datenbankledger finden Sie unter Ledger.

Spaltenname Datentyp BESCHREIBUNG
object_id int Objekt-ID der Ledgertabelle.
column_id int ID der Spalte in einer Ledgertabelle.
column_name sysname Name der Spalte in einer Ledgertabelle. Wurde der Spaltenname durch den Vorgang geändert, erfasst diese Spalte den neuen Spaltennamen.
operation_type tinyint Numerischer Wert, der den Vorgangstyp angibt.

0 = CREATE: Erstellen einer Spalte mit CREATE TABLE als Teil der Erstellung der Tabelle, die die Spalte enthält.
1 = ADD: Hinzufügen einer Spalte in einer Ledgertabelle mit ALTER TABLE/ADD COLUMN.
2 = RENAME: Umbenennen einer Spalte in einer Ledgertabelle.
3 = DROP: Löschen einer Spalte in einer Ledgertabelle.
operation_type_desc nvarchar(60) Textbeschreibung des Werts von operation_type.
transaction_id bigint Transaktions-ID, die für die Datenbank eindeutig ist (entspricht einer Transaktions-ID im Transaktionsprotokoll der Datenbank).
sequence_number bigint Die 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 fügt der Ledgertabelle eine Spalte hinzu.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Ein Benutzer benennt eine Spalte in der Ledgertabelle um.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. Ein Benutzer löscht eine Spalte in der Ledgertabelle.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

Mit der folgenden Abfrage werden „sys.ledger_column_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.[column_name] AS [column_name]
, h.[operation_type_desc]
FROM sys.ledger_column_history h
JOIN sys.database_ledger_transactions t
ON h.transaction_id = t.transaction_id
ORDER BY t.[commit_time];

Siehe auch