Delen via


Grootboektabellen met alleen toevoegbewerkingen maken en gebruiken

van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

In dit artikel leest u hoe u een grootboektabel met alleen toevoeggegevens maakt. Vervolgens voegt u waarden toe aan uw alleen-toevoegbare grootboektabel en probeert u daarna de gegevens bij te werken. Ten slotte bekijkt u de resultaten met behulp van de grootboekweergave. We gebruiken een voorbeeld van een kaarttoegangssysteem voor een faciliteit, wat een append-only systeempatroon is. In ons voorbeeld krijgt u een praktische kijk op de relatie tussen de append-only-ledgertabel en de bijbehorende grootboekweergave.

Zie Alleen-toevoegen grootboektabellen voor meer informatie.

Vereiste voorwaarden

Een alleen toevoegbare grootboektabel maken

We maken een KeyCardEvents tabel met het volgende schema.

Kolomnaam Gegevenstype Description
Medewerker-ID int De unieke id van de werknemer die toegang heeft tot het gebouw
Beschrijving van Toegangsoperatie nvarchar (MAX) De toegangsactie van de werknemer
Tijdstempel datetime2 De datum en tijd waarop de werknemer toegang heeft tot het gebouw
  1. Gebruik SQL Server Management Studio om een nieuw schema en een nieuwe tabel met de naam [AccessControl].[KeyCardEvents]te maken.

    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. Voeg een nieuwe gebeurtenis voor gebouwtoegang toe aan de [AccessControl].[KeyCardEvents] tabel met de volgende waarden.

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. Bekijk de inhoud van de tabel KeyCardEvents en geef de ALTIJD GEGENEREERDE kolommen op die worden toegevoegd aan de toevoeg-alleen grootboektabel.

    SELECT *
         ,[ledger_start_transaction_id]
         ,[ledger_start_sequence_number]
    FROM [AccessControl].[KeyCardEvents];
    
  4. Bekijk de inhoud van de grootboekweergave van KeyCardEvents, samen met de systeemweergave grootboektransacties om te bepalen wie records heeft toegevoegd aan de 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. Probeer de KeyCardEvents tabel bij te werken door EmployeeID te wijzigen van 43869 naar 34184.

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

    Er wordt een foutbericht weergegeven waarin wordt aangegeven dat de updates niet zijn toegestaan voor de tabel met alleen toevoeggegevens.

    Schermopname die het append-only foutmelding toont.

Permissions

Om grootboektabellen met alleen-toevoegen te maken is de ENABLE LEDGER machtiging vereist. Zie Machtigingen voor meer informatie over machtigingen met betrekking tot grootboektabellen.