Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2022 (16.x) y versiones posteriores
de Azure SQL Database
Azure SQL Managed Instance
En este artículo se muestra cómo crear una tabla de libro de contabilidad de solo anexión. Luego, insertará valores en la tabla de libro de contabilidad de solo anexión e intentará realizar actualizaciones de los datos. Por último, verá los resultados mediante la vista de libro de contabilidad. Se usará un ejemplo de un sistema de acceso con clave de tarjeta de una instalación, que es un modelo de sistema de solo anexión. Nuestro ejemplo le ofrecerá una perspectiva práctica de la relación entre la tabla de contabilidad de solo anexión y su vista de contabilidad correspondiente.
Para más información, consulte Tablas de libro de contabilidad de solo anexión.
Requisitos previos
Creación de tablas de libro de contabilidad de solo anexión
Crearemos una tabla KeyCardEvents con el esquema siguiente.
| Nombre de la columna | Tipo de datos | Descripción |
|---|---|---|
| EmployeeID (Id. de empleado) | int | Identificador único del empleado que accede al edificio. |
| Descripción de la operación de acceso | nvarchar (MAX) | La operación de acceso del empleado |
| Marca de tiempo | datetime2 | Fecha y hora en que el empleado ha accedido al edificio. |
Use SQL Server Management Studio para crear un nuevo esquema y una tabla denominada
[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));Agregue un nuevo evento de acceso al edificio en la tabla
[AccessControl].[KeyCardEvents]con los valores siguientes.INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');Consulte el contenido de su tabla KeyCardEvents y especifique las columnas GENERATED ALWAYS que se añaden a su tabla de libro de contabilidad de solo anexión.
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];Examine el contenido de la vista de libro de contabilidad keyCardEvents junto con la vista del sistema de transacciones del libro de contabilidad para identificar quién agregó registros a la tabla.
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;Intente actualizar la tabla
KeyCardEventscambiandoEmployeeIDde43869a34184..UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;Recibirá un mensaje de error que indica que no están permitidas las actualizaciones para la tabla de libro de contabilidad de solo anexión.
Permisos
Para crear tablas de libro de contabilidad de solo anexión se necesita el permiso ENABLE LEDGER. Para más información sobre los permisos relacionados con las tablas de libro de contabilidad, consulte Permisos.