sys.ledger_column_history (Transact-SQL)
Berlaku untuk: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance
Menangkap riwayat operasi yang dilindungi secara kriptografis pada kolom tabel ledger: menambahkan, mengganti nama, dan menghilangkan kolom.
Untuk informasi selengkapnya tentang ledger database, lihat Ledger
Nama kolom | Jenis data | Deskripsi |
---|---|---|
object_id | int | ID objek tabel ledger. |
column_id | int | ID kolom kolom dalam tabel ledger. |
column_name | nama sysname | Nama kolom dalam tabel ledger. Jika operasi telah mengubah nama kolom, kolom ini akan mengambil nama kolom baru. |
operation_type | kecil | Nilai numerik yang menunjukkan jenis operasi 0 = CREATE – membuat kolom sebagai bagian dari pembuatan tabel yang berisi kolom menggunakan CREATE TABLE. 1 = ADD – menambahkan kolom dalam tabel ledger, menggunakan ALTER TABLE/ADD COLUMN. 2 = GANTI NAMA - mengganti nama kolom dalam tabel ledger. 3 = DROP - menjatuhkan kolom dalam tabel ledger. |
operation_type_desc | nvarchar(60) | Deskripsi tekstual nilai operation_type. |
transaction_id | bigint | ID transaksi yang unik untuk database (sesuai dengan ID transaksi dalam log transaksi database). |
sequence_number | bigint | Nomor urut operasi dalam transaksi. |
Izin
Memerlukan izin TAMPILKAN KONTEN LEDGER.
Contoh
Pertimbangkan urutan operasi berikut pada tabel ledger.
Pengguna membuat tabel ledger.
CREATE TABLE [Employees] ( EmployeeID INT NOT NULL, Salary Money NOT NULL ) WITH (SYSTEM_VERSIONING = ON, LEDGER = ON); GO
Pengguna menambahkan kolom ke tabel ledger.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
Pengguna mengganti nama kolom tabel ledger.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
Pengguna menjatuhkan kolom tabel ledger.
ALTER TABLE [Employees] DROP COLUMN Firstname;
Kueri di bawah ini bergabung sys.ledger_column_history dan sys.database_ledger_transactions untuk menghasilkan riwayat perubahan pada kolom tabel ledger, termasuk waktu setiap dan perubahan dan nama pengguna yang memicunya.
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];