建立及使用僅限附加的總帳資料表
適用於:SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體
本文說明如何建立僅限附加的總帳資料表。 接下來,您將在僅限附加的總帳資料表中插入值,然後嘗試更新資料。 最後,您將使用總帳檢視來檢視結果。 我們使用的範例是適用於某個設施的電子鑰匙門禁系統,這是一種僅限附加的系統模式。 我們的範例將可讓您實際查看僅限附加的總帳資料表與其對應的總帳檢視之間的關聯性。
如需詳細資訊,請參閱僅限附加的總帳資料表 (部分機器翻譯)。
必要條件
建立僅限附加的總帳資料表
我們將建立具有下列結構描述的 KeyCardEvents
資料表。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
EmployeeID | int | 進入該建築物之員工的唯一識別碼 |
AccessOperationDescription | nvarchar (MAX) | 員工的進入操作 |
時間戳記 | datetime2 | 員工進入該建築物的日期和時間 |
使用 SQL Server Management Studio 或 Azure 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));
在
[AccessControl].[KeyCardEvents]
資料表中,使用下列值新增進入建築物事件。INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
檢視 KeyCardEvents 資料表的內容,並指定 GENERATED ALWAYS 資料行,以將其新增至僅限附加的總帳資料表。
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];
檢視 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;
透過將
EmployeeID
從43869
變更為34184.
,嘗試更新KeyCardEvents
資料表UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
您將收到一則錯誤訊息,指出不允許更新僅限附加的總帳資料表。
權限
建立僅限附加的總帳資料表需要 ENABLE LEDGER
權限。 如需總帳資料表相關權限的詳細資訊,請參閱權限 (部分機器翻譯)。