2017-01-03 2 views
-1

OLEDB 원본으로 동적 SQL을 사용하는 저장 프로 시저를 사용하는 SSIS 패키지가 있습니다. 나는 패키지를 실행하면이 오류를SSIS OLE DB 원본에서 동적 SQL과 함께 저장 프로 시저를 사용하는 동안 오류가 발생했습니다.

소스를 얻을 : "Microsoft SQL Server를 네이티브 클라이언트 11.0"HRESULT를 : 0X80004005 설명 : "메타 데이터를 판정 할 수 없었던 문 '간부 인 sp_executesql을 @sqlStr'때문에 절차 's_offc_cap_st_rpt_efile' 에는 동적 SQL이 포함되어 있으므로 결과 집합을 명시 적으로 설명하려면 WITH RESULT SETS 절을 사용하십시오. "

Oledb source 구성은 다음과 같습니다

enter image description here

이 오류에 대한 이유는 무엇입니까? 누군가이 문제에 대한 해결책을 찾도록 도와 줄 수 있습니까?

+0

오류 메시지와 같이 WITH RESULT SETS 절을 사용하려고 시도 했습니까? –

+0

나는 그것을 proc ...에 저장하려고 시도했으나 제대로 작동하지 않았다. – bmsqldev

+0

그러면 잘못했다. 시도를 게시하여 디버깅을 도와주십시오. 스토어드 프로 시저에서는 사용하지 않고 호출 할 때는 사용합니다. 여기를 참조하십시오 : http://stackoverflow.com/a/28328734/1507566 –

답변

1

SSIS는 SSIS의 열 이름을 적절한 출력 \ 대상에 매핑 할 수 있도록 메타 데이터를 만들려면 항상 열 목록을 선택해야합니다.

여기서 동적 SQL을 사용하여 런타임에 컴파일하고 실행합니다. 이 오류를 제거하려는 경우 나는 테이블 변수를 생성하고이 테이블 변수에 동적 SQL의 출력을 가져오고 select *를 @tablevaribale에서 작성하는 것이 좋습니다. 그래서 그 절차는 컬럼리스트를 ssis로 되돌릴 것이다.

+0

동적 SQL은 내장 프로 시저 내부에서 생성됩니다. 저장 프로 시저 내에서 테이블 변수를 작성하면 – bmsqldev

+1

@bmsqldev 예 일단 동적 SQL의 테이블 변수와 덤프 출력을 작성한 후 작성하면 해당 테이블 변수에서 작동 할 select 문을 선택하십시오. 문제가 계속되는 경우 알려 주시기 바랍니다. –