Erstellen und Verwenden von Ledgertabellen, die nur Anfügevorgänge unterstützen
Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL Managed Instance
In diesem Artikel erfahren Sie, wie Sie eine Ledgertabelle erstellen, die nur Anfügevorgänge unterstützt. Als Nächstes fügen Sie Werte in die Ledgertabelle, die nur Anfügevorgänge unterstützt, ein. Danach versuchen Sie, die Daten zu aktualisieren. Schließlich zeigen Sie die Ergebnisse unter Verwendung der Ledgeransicht an. Wir verwenden ein Beispiel für ein Kartenschlüsselzugangssystem für eine Einrichtung, das ein Nur-Anfügen-Systemmuster ist. In diesem Beispiel erhalten Sie einen praxisnahen Blick auf die Beziehung zwischen der Ledgertabelle, die nur Anfügevorgänge unterstützt, und der entsprechenden Ledgeransicht.
Weitere Informationen finden Sie unter Ledgertabellen, die nur Anfügevorgänge unterstützen.
Voraussetzungen
Erstellen einer Ledgertabelle, die nur Anfügevorgänge unterstützt
Wir erstellen eine KeyCardEvents
-Tabelle mit dem folgenden Schema.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
EmployeeID | int | Die eindeutige ID des Mitarbeiters, der in das Gebäude eintritt |
AccessOperationDescription | nvarchar (MAX) | Der Zugangsvorgang des Mitarbeiters |
Timestamp | datetime2 | Das Datum und die Uhrzeit, an dem bzw. zu der der Mitarbeiter auf das Gebäude zugegriffen hat |
Erstellen Sie in SQL Server Management Studio oder Azure Data Studio ein neues Schema und die neue Tabelle namens
[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));
Fügen Sie in der Tabelle
[AccessControl].[KeyCardEvents]
ein neues Gebäudezugangsereignis mit den folgenden Werten hinzu.INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
Zeigen Sie den Inhalt Ihrer KeyCardEvents-Tabelle an, und geben Sie die Spalten GENERATED ALWAYS an, die Ihrer Ledgertabelle, die nur Anfügevorgänge unterstützt, hinzugefügt werden.
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];
Zeigen Sie den Inhalt Ihrer KeyCardEvents-Ledgersicht zusammen mit der Systemsicht für Ledgertransaktionen an, um zu ermitteln, wer der Tabelle Datensätze hinzugefügt hat.
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;
Versuchen Sie, die
KeyCardEvents
-Tabelle zu aktualisieren, indem SieEmployeeID
von43869
in34184.
ändern.UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
Sie erhalten eine Fehlermeldung mit dem Hinweis, dass Aktualisierungen für die Ledgertabelle, die nur Anfügevorgänge unterstützt, nicht zulässig sind.
Berechtigungen
Für das Erstellen von Ledgertabellen, die nur Anfügevorgänge unterstützen, ist die Berechtigung ENABLE LEDGER
erforderlich. Weitere Informationen zu Berechtigungen im Zusammenhang mit Ledgertabellen finden Sie unter Berechtigungen.