sys.ledger_column_history (Transact-SQL)

Область применения: SQL Server 2022 (16.x) Управляемый экземпляр Базы данныхSQL Azure SQL Azure

Записывает криптографически защищенный журнал операций со столбцами таблиц реестра: добавление, переименование и удаление столбцов.

Дополнительные сведения о реестре базы данных см. в статье Реестр.

Имя столбца Тип данных Описание:
object_id int Идентификатор объекта таблицы реестра.
column_id int Идентификатор столбца в таблице реестра.
column_name sysname Имя столбца в таблице реестра. Если операция изменила имя столбца, этот столбец записывает новое имя столбца.
operation_type tinyint Числовое значение, указывающее тип операции.

0 = CREATE — создание столбца в рамках создания таблицы, содержащей столбец, с помощью инструкции CREATE TABLE.
1 = ADD — добавление столбца в таблицу реестра с помощью инструкции ALTER TABLE/ADD COLUMN.
2 = RENAME — переименование столбца в таблице реестра.
3 = DROP — удаление столбца в таблице реестра.
operation_type_desc nvarchar(60) Текстовое описание значения operation_type.
transaction_id bigint Уникальный идентификатор транзакции для базы данных (соответствует идентификатору транзакции в журнале транзакций базы данных).
sequence_number bigint Порядковый номер операции в транзакции.

Разрешения

Требуется разрешение VIEW LEDGER CONTENT.

Примеры

Рассмотрим следующую последовательность операций с таблицами реестра.

  1. Пользователь создает таблицу реестра.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Пользователь добавляет столбец в таблицу реестра.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Пользователь переименовывает столбец таблицы реестра.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. Пользователь удаляет столбец таблицы реестра.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

Приведенный ниже запрос объединяет sys.ledger_column_history и sys.database_ledger_transactions для создания журнала изменений в столбцах таблицы реестра, включая время каждого изменения и имя пользователя, инициировавшего его.

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

См. также