Creare e usare tabelle del libro mastro di solo accodamento

Si applica a: SQL Server 2022 (16.x) Database SQL di AzureIstanza gestita di SQL di Azure

Questo articolo spiega come creare una tabella del libro mastro di solo accodamento. Successivamente, verranno inseriti dei valori nella tabella del libro mastro di solo accodamento e verranno eseguiti tentativi di aggiornamento ai dati. Infine, verranno visualizzati i risultati usando la vista del libro mastro. Verrà usato un esempio di sistema di accesso con scheda chiave per una struttura, che è un modello di sistema di solo accodamento. Nell'esempio viene esaminata in modo pratico la relazione tra la tabella del libro mastro di solo accodamento e la vista del libro mastro.

Per altre informazioni, vedere Tabelle del libro mastro di solo accodamento.

Prerequisiti

Creare una tabella del libro mastro di solo accodamento

Verrà creata una KeyCardEvents tabella con lo schema seguente.

Nome colonna Tipo di dati Descrizione
EmployeeID int ID univoco del dipendente che accede all'edificio
AccessOperationDescription nvarchar (MAX) L'operazione di accesso del dipendente
Timestamp datetime2 Data e ora in cui il dipendente ha eseguito l'accesso all'edificio
  1. Usare SQL Server Management Studio o Azure Data Studio per creare un nuovo schema e una tabella denominata [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. Aggiungere un nuovo evento di accesso all’edificio nella tabella [AccessControl].[KeyCardEvents] con i valori seguenti.

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. Visualizzare il contenuto della tabella KeyCardEvents e specificare le colonne GENERATED ALWAYS aggiunte alla tabella del libro mastro di solo accodamento.

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

    Screenshot that shows results from querying the KeyCardEvents table.

  4. Visualizzare il contenuto della visualizzazione libro mastro KeyCardEvents insieme alla visualizzazione di sistema delle transazioni libro mastro per identificare chi ha aggiunto i record nella tabella.

     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. Provare ad aggiornare la tabella KeyCardEvents modificando EmployeeID da 43869 a 34184.

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

    Verrà visualizzato un messaggio di errore che indica che gli aggiornamenti non sono consentiti per la tabella del libro mastro di solo accodamento.

    Screenshot that shows the append-only error message.

Autorizzazioni

La creazione di tabelle del libro mastro di solo accodamento richiede l'autorizzazione ENABLE LEDGER. Per altre informazioni sulle autorizzazioni riguardanti le tabelle del libro mastro, vedere Autorizzazioni.