sys.ledger_column_history (Transact-SQL)
S’applique à : SQL Server 2022 (16.x) Azure SQL Database Azure 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.
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
Un utilisateur ajoute une colonne à la table de registre.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
Un utilisateur renomme une colonne de la table de registre.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
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];