Microsoft SQL Server 패키지에 대해 DTC 트랜잭션을 사용하도록 설정하면 SSIS 패키지 실행이 중지됩니다.
이 문서에서는 패키지에 대해 DTC 트랜잭션을 사용하도록 설정하고 데이터 흐름 태스크에서 구성 요소에 대해 속성을 사용하도록 설정하는 경우 Microsoft SSIS(SQL Server Integration Services) 패키지 실행이 응답하지 않는 문제를 resolve ValidateExternalMetadata
수 있습니다.
원래 제품 버전: SQL Server
원래 KB 번호: 2253391
증상
다음과 같은 경우를 생각해볼 수 있습니다.
- SQL Server SSIS 패키지를 만듭니다.
- SSIS 패키지에는 데이터 흐름 태스크 및 기타 태스크가 포함되어 있습니다.
TransactionOption
SSIS 패키지의 속성은 DTC 트랜잭션을 사용하는 데 필요로 설정됩니다.- 다른 작업은 데이터 흐름 태스크를 실행하기 전에 DTC 트랜잭션에서 실행됩니다.
- 데이터 흐름 태스크에 구성 요소를 추가합니다.
ValidateExternalMetadata
데이터 흐름 구성 요소의 속성은 True로 설정됩니다.- 데이터 흐름 태스크에는 데이터 액세스 모드가 테이블 또는 뷰 또는 테이블 이름 또는 뷰 이름 변수로 설정된 OLE DB 대상 구성 요소가 포함되어 있습니다.
이 시나리오에서 패키지를 실행하면 실행이 응답을 중지합니다. 또한 Visual Studio에서 SSIS 패키지를 디버그하는 경우 진행률 보기에서 다음과 유사한 메시지를 받습니다.
SSIS 패키지 "Package.dtsx"가 시작됩니다.
정보: Data Flow 작업, DTS에서 0x4004300A. 파이프라인: 유효성 검사 단계가 시작됩니다. 정보: 패키지에서 0x4001100A: 이 컨테이너에 대한 분산 트랜잭션 시작 정보: Data Flow 작업, DTS에서 0x4004300A. 파이프라인: 유효성 검사 단계가 시작됩니다.
원인
이 문제는 데이터 흐름의 연결이 DTC 트랜잭션에 등록되지 않았기 때문에 발생합니다. 이렇게 하면 저장 프로시저의 sp_cursoropen
실행이 차단됩니다. 이는 유효성 검사 프로세스 중에 DTC 트랜잭션에 연결을 등록할 수 없기 때문에 디자인 기능입니다. 증상 섹션에 설명된 시나리오에서는 데이터 흐름 태스크의 연결이 DTC 트랜잭션에 등록되지 않았기 때문에 패키지를 실행할 때 데이터 흐름 구성 요소의 유효성 검사 프로세스가 차단됩니다.
해결 방법
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
데이터 흐름 태스크의 모든 구성 요소에 대해 False로 설정합니다
ValidateExternalMetadata
.OLE DB 대상 구성 요소의 데이터 액세스 모드를 다음 모드 중 하나로 설정합니다.
- 테이블 또는 뷰 - 빠른 로드
- 테이블 이름 또는 뷰 이름 변수 - 빠른 로드
- SQL 명령
추가 정보
테이블 또는 뷰 데이터 액세스 모드는 차단되지만 데이터 공급자가 각 데이터 액세스 모드에 대해 실행한 다른 명령 때문에 다른 데이터 액세스 모드는 차단되지 않습니다. 이 문제에 대한 자세한 내용을 보려면 SQL Server Profiler 사용하여 데이터 공급자가 실행한 다양한 명령을 확인합니다.
SQL Server Profiler 사용하는 방법에 대한 자세한 내용은 SQL Server Profiler 템플릿 및 권한을 참조하세요.
SSIS 패키지 문제를 해결하는 방법에 대한 자세한 내용은 패키지 개발 문제 해결을 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기