Поделиться через


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.

Примеры

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

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

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

    EXEC sp_rename 'Employees', 'Employees_Copy';
    
  3. Пользователь переименовывает представление реестра таблицы реестра.

    EXEC sp_rename 'Employees_Ledger', 'Employees_Ledger_Copy';
    
  4. Пользователь удаляет таблицу реестра.

    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

См. также