다음을 통해 공유


sys.sp_cdc_get_ddl_history(Transact-SQL)

적용 대상: SQL Server

해당 캡처 인스턴스에 대해 변경 데이터 캡처를 사용하도록 설정한 이후 지정된 캡처 인스턴스와 연결된 DDL(데이터 정의 언어) 변경 기록을 반환합니다. 변경 데이터 캡처는 SQL Server의 모든 버전에서 사용할 수 없습니다. SQL Server 버전에서 지원되는 기능 목록은 SQL Server 2022의 버전과 지원하는 기능을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

sys.sp_cdc_get_ddl_history [ @capture_instance = ] 'capture_instance'
[ ; ]

인수

[ @capture_instance = ] 'capture_instance'

원본 테이블과 연결된 캡처 인스턴스의 이름입니다. @capture_instance sysname이며 될 수 없습니다NULL.

반환 코드 값

0(성공) 또는 1(실패).

결과 집합

열 이름 데이터 형식 설명
source_schema sysname 원본 테이블 스키마의 이름입니다.
source_table sysname 원본 테이블의 이름입니다.
capture_instance sysname 캡처 인스턴스의 이름입니다.
required_column_update bit 원본 열에 대한 데이터 형식 변경 내용을 반영하기 위해 변경 테이블의 열을 변경해야 하는 DDL 변경 내용을 나타냅니다.
ddl_command nvarchar(max) 원본 테이블에 적용된 DDL 문입니다.
ddl_lsn binary(10) DDL 변경과 연결된 LSN(로그 시퀀스 번호)입니다.
ddl_time 날짜/시간 DDL 변경과 관련된 시간입니다.

설명

원본 테이블 열 구조를 변경하는 원본 테이블에 대한 DDL 수정(예: 열 추가 또는 삭제 또는 기존 열의 데이터 형식 변경)은 cdc.ddl_history 테이블에서 유지 관리됩니다. 이러한 변경 내용은 이 저장 프로시저를 사용하여 보고할 수 있습니다. cdc.ddl_history 항목은 캡처 프로세스가 로그에서 DDL 트랜잭션을 읽을 때 만들어집니다.

사용 권한

데이터베이스의 모든 캡처 인스턴스에 대한 행을 반환하려면 db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다. 다른 모든 사용자의 경우 원본 테이블의 모든 캡처된 열에 대해 SELECT 권한이 필요하며 캡처 인스턴스에 대한 게이팅 역할이 정의된 경우 해당 데이터베이스 역할의 멤버 자격이 필요합니다.

예제

다음 예제에서는 원본 테이블에 HumanResources.Employee 열을 추가한 다음 저장 프로시저를 실행 sys.sp_cdc_get_ddl_history 하여 캡처 인스턴스 HumanResources_Employee와 연결된 원본 테이블에 적용되는 DDL 변경 내용을 보고합니다.

USE AdventureWorks2022;
GO

ALTER TABLE HumanResources.Employee
ADD Test_Column INT NULL;
GO

-- Pause 10 seconds to allow the event to be logged.
WAITFOR DELAY '00:00:10';
GO

EXECUTE sys.sp_cdc_get_ddl_history
    @capture_instance = 'HumanResources_Employee';
GO