추가 전용 원장 테이블 만들기 및 사용

적용 대상: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

이 문서에서는 추가 전용 원장 테이블을 만드는 방법을 보여줍니다. 다음으로, 추가 전용 원장 테이블에 값을 삽입한 다음 데이터를 업데이트하려고 시도합니다. 마지막으로 원장 보기를 사용하여 결과를 볼 수 있습니다. 추가 전용 시스템 패턴인 시설에 대한 카드 키 액세스 시스템의 예를 사용합니다. 이 예에서는 추가 전용 원장 테이블과 해당 원장 뷰 간의 관계를 실용적인 방법으로 보여 줍니다.

자세한 내용은 추가 전용 원장 테이블을 참조하세요.

필수 조건

추가 전용 원장 테이블 만들기

다음 스키마를 사용하여 KeyCardEvents 테이블을 만듭니다.

열 이름 데이터 형식 설명
EmployeeID int 건물에 액세스하는 직원의 고유 ID
AccessOperationDescription nvarchar(MAX) 직원의 액세스 작업
타임스탬프 datetime2 직원이 건물에 액세스한 날짜 및 시간
  1. 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));
    
  2. 다음 값을 사용하여 테이블에 새 건물 액세스 이벤트를 [AccessControl].[KeyCardEvents] 추가합니다.

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. KeyCardEvents 테이블의 내용을 보고 추가 전용 원장 테이블에 추가되는 GENERATED ALWAYS 열을 지정합니다.

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

    Screenshot that shows results from querying the KeyCardEvents table.

  4. 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;
    
  5. 다음 43869 으로 변경 EmployeeID 하여 테이블을 업데이트 KeyCardEvents 해 보세요.34184.

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

    추가 전용 원장 테이블에 대한 업데이트가 허용되지 않는다는 오류 메시지가 표시됩니다.

    Screenshot that shows the append-only error message.

사용 권한

추가 전용 원장 테이블을 만들려면 권한이 필요합니다 ENABLE LEDGER . 원장 테이블과 관련된 권한에 대한 자세한 내용은 사용 권한을 참조 하세요.