Tabel ledger khusus tambahan

Berlaku untuk: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

Tabel ledger khusus tambahan hanya INSERT mengizinkan operasi pada tabel Anda, yang memastikan bahwa pengguna istimewa seperti administrator database tidak dapat mengubah data melalui operasi Bahasa Manipulasi Data tradisional. Tabel ledger khusus tambahan sangat ideal untuk sistem yang tidak memperbarui atau menghapus catatan data, seperti sistem kejadian dan manajemen informasi keamanan atau sistem blockchain tempat data perlu direplikasi dari blockchain ke database. Karena tidak ada operasi UPDATE atau DELETE pada tabel khusus tambahan, tabel riwayat yang sesuai tidak diperlukan, seperti halnya tabel ledger yang dapat diperbarui.

Diagram that shows architecture of ledger tables.

Anda dapat membuat tabel ledger khusus tambahan dengan menyebutkan argumen LEDGER = ON dalam pernyataan BUAT TABEL (Transact-SQL) dan menyebutkan opsi APPEND_ONLY = ON.

Penting

Setelah tabel dibuat sebagai tabel ledger, tabel tidak dapat dikembalikan ke tabel yang tidak memiliki fungsionalitas ledger. Oleh karena itu, penyerang tidak dapat menghapus kemampuan ledger secara sementara, membuat perubahan pada tabel, dan kemudian mengaktifkan kembali fungsionalitas ledger.

Skema tabel ledger khusus tambahkan

Tabel khusus tambahan harus memiliki kolom GENERATED ALWAYS berikut yang berisi metadata yang mencatat transaksi mana yang membuat perubahan pada tabel dan urutan operasi untuk memperbarui baris berdasarkan transaksi. Saat membuat tabel ledger khusus tambahan, kolom GENERATED ALWAYS akan dibuat di tabel ledger Anda. Data ini berguna untuk tujuan forensik dalam memahami cara data dimasukkan seiring waktu.

Jika Anda tidak menyebutkan definisi kolom GENERATED ALWAYS dalam pernyataan BUAT TABEL, sistem akan secara otomatis menambahkannya menggunakan nama default berikut.

Nama kolom default Jenis data Deskripsi
ledger_start_transaction_id bigint ID transaksi yang membuat versi baris
ledger_start_sequence_number bigint Nomor urut suatu operasi dalam suatu transaksi yang membuat versi baris

Tampilan ledger

Untuk setiap tabel ledger khusus tambahan, sistem secara otomatis membuuat tampilan, yang disebut tampilan ledger. Tampilan ledger melaporkan semua sisipan baris yang telah terjadi pada tabel. Tampilan ledger lebih berguna untuk tabel ledger yang dapat diperbarui daripada tabel ledger khusus tambahan karena tabel ledger khusus tambahan tidak memiliki kemampuan UPDATE atau DELETE. Tampilan ledger untuk tabel ledger khusus tambahan tersedia untuk konsistensi antara tabel ledger yang dapat diperbarui dan khusus tambahan.

Skema tampilan ledger

Catatan

Nama kolom tampilan ledger dapat diubah saat Anda membuat tabel menggunakan parameter <ledger_view_option> dengan pernyataan BUAT TABEL (Transact-SQL). Untuk mengetahui informasi selengkapnya, lihat opsi tampilan ledger dan contoh terkait dalam CREATE TABLE (Transact-SQL).

Nama kolom default Jenis data Deskripsi
ledger_transaction_id bigint ID transaksi yang membuat atau menghapus versi baris.
ledger_sequence_number bigint Jumlah urutan operasi tingkat baris di dalam transaksi pada tabel.
ledger_operation_type tinyint Berisi 1 (INSERT) atau 2 (DELETE). Memasukkan baris ke dalam tabel ledger akan menghasilkan baris baru pada tampilan ledger yang berisi 1 pada kolom ini. Menghapus baris dari tabel ledger akan menghasilkan baris baru pada tampilan ledger yang berisi 2 pada kolom ini. Memperbarui baris pada tabel ledger menghasilkan dua baris baru pada tampilan ledger. Satu baris berisi 2 (DELETE) dan baris lainnya berisi 1 (INSERT) pada kolom ini. DELETE tidak boleh terjadi pada tabel ledger khusus tambahan.
ledger_operation_type_desc nvarchar(128) Berisi INSERT atau DELETE. Untuk informasi selengkapnya, lihat baris sebelumnya.