sys.ledger_column_history (Transact-SQL)
Se aplica a: SQL Server 2022 (16.x) Azure SQL Database Azure 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.
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
Un usuario agrega una columna a la tabla de libro de contabilidad.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
Un usuario cambia el nombre de una columna de la tabla de libro de contabilidad.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
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];