Delen via


sys.ledger_column_history (Transact-SQL)

Van toepassing op: SQL Server 2022 (16.x) en latere versies Van Azure SQL DatabaseAzure SQL Managed Instance

Legt de cryptografisch beschermde geschiedenis van bewerkingen vast op kolommen van grootboektabellen: kolommen toevoegen, hernoemen en verwijderen.

Voor meer informatie over databasegrootboek, zie Ledger

Kolomnaam Gegevenstype Description
object_id int De object-ID van de grootboektabel.
column_id int De kolom-ID van de kolom in een grootboektabel.
column_name sysname De naam van de kolom in de grootboektabel. Als de bewerking de kolomnaam heeft veranderd, wordt in deze kolom de nieuwe kolomnaam vastgelegd.
operation_type tinyint De numerieke waarde geeft het type van de bewerking aan

0 = CREATE – een kolom aanmaken als onderdeel van het maken van de tabel met de kolom met behulp van CREATE TABLE.
1 = ADD – een kolom toevoegen in een grootboektabel, met ALTER TABLE/ADD COLUMN.
2 = HERNOEMEN - het hernoemen van een kolom in een grootboektabel.
3 = DROP - het verwijderen van een kolom in een grootboektabel.
operation_type_desc nvarchar(60) Tekstuele beschrijving van de waarde van operation_type.
transaction_id bigint Een transactie-ID die uniek is voor de database (het komt overeen met een transactie-ID in het database-transactielogboek).
sequence_number bigint Het volgnummer van de bewerking binnen de transactie.

Permissions

Vereist de toestemming om de inhoud van het hoofdboek te bekijken .

Voorbeelden

Beschouw de volgende reeks bewerkingen op grootboektabellen.

  1. Een gebruiker maakt een grootboektabel aan.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Een gebruiker voegt een kolom toe aan de grootboektabel.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Een gebruiker hernoemt een kolom van de grootboektabel.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. Een gebruiker laat een kolom in de grootboektabel vallen.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

De onderstaande query voegt sys.ledger_column_history en sys.database_ledger_transactions toe om de geschiedenis van wijzigingen in de kolommen van de grootboektabel te produceren, inclusief het tijdstip van elke wijziging en de naam van de gebruiker die het heeft getriggerd.

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];

Zie ook