建立及使用僅限附加的總帳資料表

適用於: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL 受控執行個體

本文說明如何建立僅限附加的總帳資料表。 接下來,您將在僅限附加的總帳資料表中插入值,然後嘗試更新資料。 最後,您將使用總帳檢視來檢視結果。 我們使用的範例是適用於某個設施的電子鑰匙門禁系統,這是一種僅限附加的系統模式。 我們的範例將可讓您實際查看僅限附加的總帳資料表與其對應的總帳檢視之間的關聯性。

如需詳細資訊,請參閱僅限附加的總帳資料表 (部分機器翻譯)。

必要條件

建立僅限附加的總帳資料表

我們將建立具有下列結構描述的 KeyCardEvents 資料表。

資料行名稱 資料類型 描述
EmployeeID int 進入該建築物之員工的唯一識別碼
AccessOperationDescription nvarchar (MAX) 員工的進入操作
時間戳記 datetime2 員工進入該建築物的日期和時間
  1. 使用 SQL Server Management StudioAzure Data Studio 來建立名為 [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. [AccessControl].[KeyCardEvents] 資料表中,使用下列值新增進入建築物事件。

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. 檢視 KeyCardEvents 資料表的內容,並指定 GENERATED ALWAYS 資料行,以將其新增至僅限附加的總帳資料表

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

    Screenshot that shows results from querying the KeyCardEvents table.

  4. 檢視 KeyCardEvents 總帳檢視和總帳交易系統檢視的內容,以識別在資料表中新增記錄的使用者。

     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. 透過將 EmployeeID43869 變更為 34184.,嘗試更新 KeyCardEvents 資料表

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

    您將收到一則錯誤訊息,指出不允許更新僅限附加的總帳資料表。

    Screenshot that shows the append-only error message.

權限

建立僅限附加的總帳資料表需要 ENABLE LEDGER 權限。 如需總帳資料表相關權限的詳細資訊,請參閱權限 (部分機器翻譯)。