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 사용하여 데이터 공급자가 실행한 다양한 명령을 확인합니다.