sys.ledger_column_history (Transact-SQL)
Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure
Записывает криптографически защищенный журнал операций со столбцами таблиц реестра: добавление, переименование и удаление столбцов.
Дополнительные сведения о реестре базы данных см. в статье Реестр.
Имя столбца | Тип данных | Description |
---|---|---|
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.
Примеры
Рассмотрим следующую последовательность операций с таблицами реестра.
Пользователь создает таблицу реестра.
CREATE TABLE [Employees] ( EmployeeID INT NOT NULL, Salary Money NOT NULL ) WITH (SYSTEM_VERSIONING = ON, LEDGER = ON); GO
Пользователь добавляет столбец в таблицу реестра.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
Пользователь переименовывает столбец таблицы реестра.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
Пользователь удаляет столбец таблицы реестра.
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];