sys.ledger_column_history (Transact-SQL)

S’applique à : SQL Server 2022 (16.x) 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éation d’une colonne dans le cadre de la création de la table contenant cette colonne à l’aide de la commande CREATE TABLE.
1 = ADD : ajout d’une colonne dans une table de registre, à l’aide de la commande ALTER TABLE/ADD COLUMN.
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 l’autorisation VIEW LEDGER CONTENT.

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