sys.ledger_column_history (Transact-SQL)

S’applique à : SQL Server 2022 (16.x) et versions ultérieures d’Azure SQL DatabaseAzure SQL Managed Instance

Capture l’historique protégé par chiffrement des opérations sur les colonnes des tables de registre : ajout, renommage et suppression de colonnes.

Pour plus d’informations sur le registre de base de données, consultez Registre.

Nom de la colonne Type de données Description
object_id int ID d’objet de la table de registre.
column_id int ID de la colonne dans une table de registre.
column_name sysname Nom de la colonne dans la table de registre. Si l’opération a modifié le nom de la colonne, cette colonne capture ce nouveau nom.
operation_type tinyint Valeur numérique indiquant le type de l’opération

0 = CREATE – créer une colonne dans le cadre de la création de la table contenant la colonne en utilisant CREATE TABLE.
1 = ADD – ajout d’une colonne dans une table de registre, en utilisant ALTER TABLEla colonne /ADD.
2 = RENAME : renommage d’une colonne dans une table de registre.
3 = DROP : suppression d’une colonne dans une table de registre.
operation_type_desc nvarchar(60) Description textuelle de la valeur de operation_type.
transaction_id bigint ID de transaction unique pour la base de données (il correspond à un ID de transaction dans le journal des transactions de la base de données).
sequence_number bigint Numéro de séquence de l’opération au sein de la transaction.

autorisations

Nécessite la VIEW permission de contenu du LEDGER .

Exemples

Tenez compte de la séquence d’opérations suivante sur les tables de registre.

  1. Un utilisateur crée une table de registre.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Un utilisateur ajoute une colonne à la table de registre.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Un utilisateur renomme une colonne de la table de registre.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. Un utilisateur supprime une colonne de la table de registre.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

La requête ci-dessous joint sys.ledger_column_history et sys.database_ledger_transactions pour produire l’historique des modifications effectuées sur les colonnes de table de registre, qui comprend l’heure de chaque modification et le nom de l’utilisateur qui l’a déclenchée.

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

Voir aussi