sys.ledger_column_history (Transact-SQL)

Berlaku untuk: SQL Server 2022 (16.x) Azure SQL DatabaseAzure 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.

  1. Pengguna membuat tabel ledger.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. Pengguna menambahkan kolom ke tabel ledger.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. Pengguna mengganti nama kolom tabel ledger.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. 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];

Baca juga