sys.ledger_table_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 effectuées sur les tables de registre : création de tables de registre, renommage des tables de registre ou vues de registre et suppression de tables de registre.

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.
schema_name sysname Nom du schéma contenant la table de registre. Si l’opération a modifié le nom du schéma, cette colonne capture ce nouveau nom.
table_name sysname Nom de la table de registre. Si l’opération a modifié le nom de la table, cette colonne capture ce nouveau nom.
ledger_view_schema_name sysname Nom du schéma contenant la vue de registre de la table de registre. Si l’opération a modifié le nom du schéma, cette colonne capture ce nouveau nom.
ledger_view_name sysname Nom de la vue de registre pour la table de registre. Si l’opération a modifié le nom de la vue, 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 table de registre.
1 = DROP : suppression d’une table de registre.
2 = RENAME : renommage d’une table de registre.
3 = RENAME_VIEW : renommage de la vue de registre d’une table de registre.
operation_type_desc nvarchar(60) Description textuelle de la valeur de operation_type.
transaction_id bigint ID de la transaction qui incluait l’opération sur la table de registre. Il identifie une ligne dans sys.database_ledger_transactions.
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 renomme la table de registre.

    EXEC sp_rename 'Employees', 'Employees_Copy';
    
  3. Un utilisateur renomme la vue de registre de la table de registre.

    EXEC sp_rename 'Employees_Ledger', 'Employees_Ledger_Copy';
    
  4. Un utilisateur supprime la table de registre.

    DROP TABLE [Employees];
    

La requête ci-dessous joint sys.ledger_table_history et sys.database_ledger_transactions pour produire l’historique des modifications effectuées sur les tables 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.[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

Voir aussi