다음을 통해 공유


sys.ledger_column_history(Transact-SQL)

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

원장 테이블 열에서 열 추가, 이름 바꾸기, 삭제와 같이 암호화된 보호된 작업 기록을 캡처합니다.

데이터베이스 원장에 관한 자세한 내용은 원장을 참조하세요.

열 이름 데이터 형식 설명
object_id int 원장 테이블의 개체 ID입니다.
column_id int 원장 테이블에 있는 열의 열 ID입니다.
column_name sysname 원장 테이블에 있는 열의 이름입니다. 작업에서 열 이름을 변경한 경우 이 열은 새 열 이름을 캡처합니다.
operation_type tinyint 작업의 형식을 나타내는 숫자 값

0 = CREATE – CREATE TABLE을 사용하여 열이 포함된 테이블을 만드는 과정의 일부로 열을 만듭니다.
1 = ADD – ALTER TABLE/ADD COLUMN을 사용하여 원장 테이블에 열을 추가합니다.
2 = RENAME - 원장 테이블의 열 이름을 바꿉니다.
3 = DROP - 원장 테이블에서 열을 삭제합니다.
operation_type_desc nvarchar(60) operation_type 값에 대한 텍스트 설명입니다.
transaction_id bigint 데이터베이스에 대해 고유한 트랜잭션 ID입니다(데이터베이스 트랜잭션 로그의 트랜잭션 ID에 해당).
sequence_number bigint 트랜잭션 내 작업의 시퀀스 번호입니다.

사용 권한

원장 콘텐츠 보기 권한이 필요합니다.

예제

원장 테이블에 대한 다음 작업 시퀀스를 고려합니다.

  1. 사용자가 원장 테이블을 만듭니다.

    CREATE TABLE [Employees]
    (
        EmployeeID INT NOT NULL,
        Salary Money NOT NULL
    )
    WITH (SYSTEM_VERSIONING = ON, LEDGER = ON);
    GO
    
  2. 사용자가 원장 테이블에 열을 추가합니다.

    ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
    
  3. 사용자가 원장 테이블의 열 이름을 바꿉니다.

    EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
    
  4. 사용자가 원장 테이블의 열을 삭제합니다.

    ALTER TABLE [Employees] DROP COLUMN Firstname;
    

아래 쿼리는 sys.ledger_column_history 및 sys.database_ledger_transactions를 조인하여 각 시간, 변경 시간, 이를 트리거한 사용자 이름을 포함하여 원장 테이블 열에 대한 변경 기록을 생성합니다.

SELECT 
t.[principal_name]
, t.[commit_time]
, h.[column_name] AS [column_name]
, h.[operation_type_desc]
FROM sys.ledger_column_history h
JOIN sys.database_ledger_transactions t
ON h.transaction_id = t.transaction_id
ORDER BY t.[commit_time];

참고 항목