SSIS 패키지가 임시 테이블에 대한 메타데이터 획득을 중단합니다.
SSIS 패키지에서 여러 흐름은 데이터 준비 영역으로 전역 임시 테이블을 생성합니다. 그러나 임시 테이블에 대한 메타데이터를 가져오려고 시도할 때 한 흐름에서 간헐적인 오류가 발생합니다. 오류 메시지는 다음과 같습니다.
Unspecified error. The metadata could not be determined because statement 'select * from '##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1'' uses a temp table.
임시 테이블의 생성 표현식은 다음과 같습니다.
CREATE TABLE " + @[User::TmpMcsConfigurationDeviceHistory] + " ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
평가된 이 표현식은 다음과 같습니다.
CREATE TABLE ##TmpMcsConfigurationDeviceHistory764E56F088DC475C9CC747CC82B9E388 ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
해결 방법
이 문제를 해결하려면 WITH RESULT 사용을 고려하세요. 임시 테이블에 대한 메타데이터를 명시적으로 정의하는 SETS입니다. 이를 통해 SSIS는 sp_describe_first_result_set 단계를 우회하고 제공된 메타데이터를 사용할 수 있습니다.
구현
저장 프로시저의 경우 다음 구문을 사용하세요.
EXEC ('dbo.MyStoredProcedure') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) )
간단한 SQL 쿼리의 경우 다음 구문을 사용하세요.
EXEC (' CREATE TABLE #a ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) INSERT INTO #a ( MyIntegerColumn, MyTextColumn, MyOtherColumn ) SELECT 1 AS MyIntegerColumn, ''x'' AS MyTextColumn, 0 AS MyOtherColumn SELECT MyIntegerColumn, MyTextColumn, MyOtherColumn FROM #a') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL ,MyTextColumn VARCHAR(50) NULL ,MyOtherColumn BIT NULL ) )
위 내용은 내 SSIS 패키지가 임시 테이블에 대한 메타데이터를 획득하지 못하는 이유는 무엇이며 'WITH RESULT SETS'를 사용하여 문제를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!