추가 전용 원장 테이블 만들기 및 사용
적용 대상: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance
이 문서에서는 추가 전용 원장 테이블을 만드는 방법을 보여줍니다. 다음으로, 추가 전용 원장 테이블에 값을 삽입한 다음 데이터를 업데이트하려고 시도합니다. 마지막으로 원장 보기를 사용하여 결과를 볼 수 있습니다. 추가 전용 시스템 패턴인 시설에 대한 카드 키 액세스 시스템의 예를 사용합니다. 이 예에서는 추가 전용 원장 테이블과 해당 원장 뷰 간의 관계를 실용적인 방법으로 보여 줍니다.
자세한 내용은 추가 전용 원장 테이블을 참조하세요.
필수 조건
추가 전용 원장 테이블 만들기
다음 스키마를 사용하여 KeyCardEvents
테이블을 만듭니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
EmployeeID | int | 건물에 액세스하는 직원의 고유 ID |
AccessOperationDescription | nvarchar(MAX) | 직원의 액세스 작업 |
타임스탬프 | datetime2 | 직원이 건물에 액세스한 날짜 및 시간 |
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));
다음 값을 사용하여 테이블에 새 건물 액세스 이벤트를
[AccessControl].[KeyCardEvents]
추가합니다.INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
KeyCardEvents 테이블의 내용을 보고 추가 전용 원장 테이블에 추가되는 GENERATED ALWAYS 열을 지정합니다.
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];
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;
다음
43869
으로 변경EmployeeID
하여 테이블을 업데이트KeyCardEvents
해 보세요.34184.
UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
추가 전용 원장 테이블에 대한 업데이트가 허용되지 않는다는 오류 메시지가 표시됩니다.
사용 권한
추가 전용 원장 테이블을 만들려면 권한이 필요합니다 ENABLE LEDGER
. 원장 테이블과 관련된 권한에 대한 자세한 내용은 사용 권한을 참조 하세요.
관련 콘텐츠
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기