테이블 이름이 들어있는 매개 변수가 전달되는 SQL 명령 텍스트로 저장된 proc 파일이 있습니다. 그런 다음 proc은 해당 테이블에서 데이터를 반환합니다. 일부 비즈니스 로직이 proc에 설정된 결과로 발생해야하기 때문에 OLE DB 소스로 직접 테이블을 호출 할 수 없습니다. SQL 2008에서는 정상적으로 작동했습니다. 업그레이드 된 2012 패키지에서 "동적 SQL이 포함되어 있기 때문에 메타 데이터를 결정할 수 없습니다. 결과 집합을 명시 적으로 설명하기 위해 WITH RESULT SETS 절을 사용하는 것이 좋습니다."SSIS 2012의 OLE DB 원본에서 동적 SQL 사용
문제는 매개 변수로 전달 된 테이블 이름이 다른 값일 수 있으며 결과 필드가 매번 다를 수 있기 때문에 proc에서 필드 이름을 정의 할 수 없다는 것입니다. 누구든지이 문제가 발생하거나 아이디어가 있습니까? "dm_exec_describe_first_result_set", 임시 테이블 및 결과 집합이 포함 된 CTE를 사용하여 동적 SQL을 사용하여 모든 종류의 작업을 시도했지만 SSIS 2012에서는이 오류가 작동하지 않습니다. 컨텍스트는 많은 동적 SQL 접근 방식의 문제점입니다.
이
는 행운과 함께, 내가 노력 최신 일 :DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * FROM ' + @dataTableName
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr +',','') + [name] + ' ' + system_type_name FROM sys.dm_exec_describe_first_result_set(@sql, NULL, 1)
exec('exec(''SELECT * FROM myDataTable'') WITH RESULT SETS ((' + @listStr + '))')
'SET FMTONLY OFF; EXEC MyProc' 귀하의 OLEDB 소스. 그게 더 나아 졌습니까? – billinkc
시도했지만 작동하지 않습니다. SSIS에는 메타 데이터가 필요합니다. – jdf35
Bummer. 2008 년에서 2012 년으로 이전 할 때 임시 테이블을 다루는 친구를위한 트릭 작업이있었습니다. – billinkc