Membuat dan menggunakan tabel ledger khusus tambahan

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

Artikel ini memperlihatkan kepada Anda cara membuat tabel ledger khusus tambahan. Berikutnya, Anda akan menyisipkan nilai dalam tabel ledger khusus tambahan, lalu mencoba memperbarui data. Terakhir, Anda akan melihat hasilnya dengan menggunakan tampilan ledger. Kami akan menggunakan contoh sistem akses kunci kartu untuk fasilitas, yang merupakan pola sistem khusus tambahan. Contoh kami akan memberi Anda pandangan praktis tentang hubungan antara tabel ledger khusus tambahan dan tampilan ledger yang sesuai.

Untuk mengetahui informasi selengkapnya, lihat Tabel ledger khusus tambahan.

Prasyarat

Membuat tabel ledger khusus tambahan

Kami akan membuat tabel KeyCardEvents dengan skema berikut.

Nama kolom Jenis data Deskripsi
EmployeeID int ID unik karyawan yang mengakses gedung
AccessOperationDescription nvarchar (MAX) Operasi akses karyawan
Tanda Waktu tanggalwaktu2 Tanggal dan waktu karyawan mengakses gedung
  1. Gunakan SQL Server Management Studio atau Azure Data Studio untuk membuat skema dan tabel baru yang disebut [AccessControl].[KeyCardEvents].

    CREATE SCHEMA [AccessControl];
    GO
    CREATE TABLE [AccessControl].[KeyCardEvents]
       (
          [EmployeeID] INT NOT NULL,
          [AccessOperationDescription] NVARCHAR (1024) NOT NULL,
          [Timestamp] Datetime2 NOT NULL
       )
       WITH (LEDGER = ON (APPEND_ONLY = ON));
    
  2. Tambahkan kejadian akses gedung baru dalam tabel [AccessControl].[KeyCardEvents] dengan nilai berikut.

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. Tampilkan konten tabel KeyCardEvents Anda dan sebutkan kolom GENERATED ALWAYS yang ditambahkan ke tabel ledger khusus tambahan Anda.

    SELECT *
         ,[ledger_start_transaction_id]
         ,[ledger_start_sequence_number]
    FROM [AccessControl].[KeyCardEvents];
    

    Screenshot that shows results from querying the KeyCardEvents table.

  4. Lihat konten tampilan ledger KeyCardEvents Anda bersama dengan tampilan sistem transaksi ledger untuk mengidentifikasi siapa yang menambahkan rekaman ke dalam tabel.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[EmployeeID]
     , l.[AccessOperationDescription]
     , l.[Timestamp]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [AccessControl].[KeyCardEvents_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    
  5. Cobalah untuk memperbarui tabel KeyCardEvents dengan mengubah EmployeeID dari 43869 ke 34184.

    UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
    

    Anda akan menerima pesan kesalahan yang menyatakan bahwa pembaruan tidak diizinkan untuk tabel ledger khusus tambahan Anda.

    Screenshot that shows the append-only error message.

Izin

Membuat tabel ledger khusus tambahan memerlukan ENABLE LEDGER izin. Untuk informasi tentang izin yang terkait dengan tabel ledger, lihat Izin.