sys.ledger_column_history(Transact-SQL)
적용 대상: SQL Server 2022(16.x) Azure SQL 데이터베이스 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 | 트랜잭션 내 작업의 시퀀스 번호입니다. |
사용 권한
원장 콘텐츠 보기 권한이 필요합니다.
예제
원장 테이블에 대한 다음 작업 시퀀스를 고려합니다.
사용자가 원장 테이블을 만듭니다.
CREATE TABLE [Employees] ( EmployeeID INT NOT NULL, Salary Money NOT NULL ) WITH (SYSTEM_VERSIONING = ON, LEDGER = ON); GO
사용자가 원장 테이블에 열을 추가합니다.
ALTER TABLE [Employees] ADD Lastname NVARCHAR(256) NULL;
사용자가 원장 테이블의 열 이름을 바꿉니다.
EXEC sp_rename 'dbo.Employees.Lastname', 'Firstname', 'COLUMN';
사용자가 원장 테이블의 열을 삭제합니다.
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];