sys.ledger_column_history (Transact-SQL)

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

Captura el historial de operaciones protegidas criptográficamente en columnas de las tablas de libro de contabilidad: adiciones, cambios de nombre y eliminación de columnas.

Para obtener más información sobre el libro de contabilidad de base de datos, consulte Libro de contabilidad.

Nombre de la columna Tipo de datos Descripción
object_id int Identificador de objeto de la tabla de libro de contabilidad.
column_id int Identificador de columna de la columna de una tabla de libro de contabilidad.
column_name sysname Nombre de la columna de la tabla de libro de contabilidad. Si la operación ha cambiado el nombre de la columna, esta columna captura el nuevo nombre de columna.
operation_type tinyint Valor numérico que indica el tipo de la operación.

0 = CREATE: creación de una columna como parte de la creación de la tabla que contiene la columna mediante CREATE TABLE.
1 = ADD: adición de una columna a una tabla de libro de contabilidad mediante ALTER TABLE/ADD COLUMN.
2 = RENAME: cambio de nombre de una columna en una tabla de libro de contabilidad.
3 = DROP: eliminación de una columna en una tabla de libro de contabilidad.
operation_type_desc nvarchar(60) Descripción en texto del valor de operation_type.
transaction_id bigint Identificador de transacción único de la base de datos (se corresponde con un identificador de transacción en el registro de transacciones de la base de datos).
sequence_number bigint Número de secuencia de la operación dentro de la transacción.

Permisos

Requiere el permiso VIEW LEDGER CONTENT.

Ejemplos

Considere la siguiente secuencia de operaciones en tablas de libro de contabilidad.

  1. Un usuario crea una tabla de libro de contabilidad.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Un usuario agrega una columna a la tabla de libro de contabilidad.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Un usuario cambia el nombre de una columna de la tabla de libro de contabilidad.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. Un usuario cambia el nombre de una columna de la tabla de libro de contabilidad.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

La siguiente consulta combina sys.ledger_column_history y sys.database_ledger_transactions para generar el historial de cambios realizados en las columnas de una tabla de libro de contabilidad, donde se reflejan también la hora de cada cambio y el nombre del usuario que lo realizó.

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

Consulte también