sys.ledger_column_history (Transact-SQL)
Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL Managed Instance
Erfasst den kryptografisch geschützten Verlauf der folgenden Vorgänge für Spalten in Ledgertabellen: Hinzufügen, Umbenennen und Löschen von Spalten.
Weitere Informationen zum Datenbankledger finden Sie unter Ledger.
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
object_id | int | Objekt-ID der Ledgertabelle. |
column_id | int | ID der Spalte in einer Ledgertabelle. |
column_name | sysname | Name der Spalte in einer Ledgertabelle. Wurde der Spaltenname durch den Vorgang geändert, erfasst diese Spalte den neuen Spaltennamen. |
operation_type | tinyint | Numerischer Wert, der den Vorgangstyp angibt. 0 = CREATE: Erstellen einer Spalte mit CREATE TABLE als Teil der Erstellung der Tabelle, die die Spalte enthält. 1 = ADD: Hinzufügen einer Spalte in einer Ledgertabelle mit ALTER TABLE/ADD COLUMN. 2 = RENAME: Umbenennen einer Spalte in einer Ledgertabelle. 3 = DROP: Löschen einer Spalte in einer Ledgertabelle. |
operation_type_desc | nvarchar(60) | Textbeschreibung des Werts von operation_type. |
transaction_id | bigint | Transaktions-ID, die für die Datenbank eindeutig ist (entspricht einer Transaktions-ID im Transaktionsprotokoll der Datenbank). |
sequence_number | bigint | Die Sequenznummer des Vorgangs innerhalb der Transaktion. |
Berechtigungen
Erfordert die Berechtigung VIEW LEDGER CONTENT.
Beispiele
Sehen Sie sich die folgende Reihenfolge von Vorgängen für Ledgertabellen an.
Ein Benutzer erstellt eine Ledgertabelle.
CREATE TABLE [Employees] ( EmployeeID INT NOT NULL, Salary Money NOT NULL ) WITH (SYSTEM_VERSIONING = ON, LEDGER = ON); GO
Ein Benutzer fügt der Ledgertabelle eine Spalte hinzu.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
Ein Benutzer benennt eine Spalte in der Ledgertabelle um.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
Ein Benutzer löscht eine Spalte in der Ledgertabelle.
ALTER TABLE [Employees] DROP COLUMN Firstname;
Mit der folgenden Abfrage werden „sys.ledger_column_history“ und „sys.database_ledger_transactions“ verknüpft, um den Änderungsverlauf für Spalten in einer Ledgertabelle zu erstellen, einschließlich der Uhrzeit der jeweiligen Änderung und des Namens des Benutzers, der die Änderung ausgelöst hat.
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];