sys.ledger_table_history (Transact-SQL)
Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure
Записывает криптографически защищенный журнал операций с таблицами реестра: создание таблиц реестра, переименование таблиц реестра и представлений реестра, удаление таблиц реестра.
Дополнительные сведения о реестре базы данных см. в статье Реестр.
Имя столбца | Тип данных | Description |
---|---|---|
object_id | int | Идентификатор объекта таблицы реестра. |
schema_name | sysname | Имя схемы, содержащей таблицу реестра. Если операция изменила имя схемы, в этот столбец записывается новое имя схемы. |
table_name | sysname | Имя таблицы реестра. Если операция изменила имя таблицы, в этот столбец записывается новое имя таблицы. |
ledger_view_schema_name | sysname | Имя схемы, содержащей представление реестра для таблицы реестра. Если операция изменила имя схемы, в этот столбец записывается новое имя схемы. |
ledger_view_name | sysname | Имя представления реестра для таблицы реестра. Если операция изменила имя представления, в этот столбец записывается новое имя представления. |
operation_type | tinyint | Числовое значение, указывающее тип операции. 0 = CREATE — создание таблицы реестра. 1 = DROP — удаление таблицы реестра. 2 = RENAME — переименование таблицы реестра. 3 = RENAME_VIEW — переименование представления реестра для таблицы реестра. |
operation_type_desc | nvarchar(60) | Текстовое описание значения operation_type. |
transaction_id | bigint | Транзакция идентификатора, включающего операцию в таблице реестра. Он идентифицирует строку в sys.database_ledger_transactions. |
sequence_number | bigint | Порядковый номер операции в транзакции. |
Разрешения
Требуется разрешение VIEW LEDGER CONTENT.
Примеры
Рассмотрим следующую последовательность операций с таблицами реестра.
Пользователь создает таблицу реестра.
CREATE TABLE [Employees] ( EmployeeID INT NOT NULL, Salary Money NOT NULL ) WITH (SYSTEM_VERSIONING = ON, LEDGER = ON); GO
Пользователь переименовывает таблицу реестра.
EXEC sp_rename 'Employees', 'Employees_Copy';
Пользователь переименовывает представление реестра таблицы реестра.
EXEC sp_rename 'Employees_Ledger', 'Employees_Ledger_Copy';
Пользователь удаляет таблицу реестра.
DROP TABLE [Employees];
Приведенный ниже запрос объединяет sys.ledger_table_history и sys.database_ledger_transactions для создания журнала изменений в таблицах реестра, включая время каждого изменения и имя пользователя, инициировавшего его.
SELECT
t.[principal_name]
, t.[commit_time]
, h.[schema_name] + '.' + h.[table_name] AS [table_name]
, h.[ledger_view_schema_name] + '.' + h.[ledger_view_name] AS [view_name]
, h.[operation_type_desc]
FROM sys.ledger_table_history h
JOIN sys.database_ledger_transactions t
ON h.transaction_id = t.transaction_id