>데이터 베이스 >MySQL 튜토리얼 >내 SSIS 패키지가 임시 테이블에 대한 메타데이터를 획득하지 못하는 이유는 무엇이며 'WITH RESULT SETS'를 사용하여 문제를 어떻게 해결할 수 있습니까?

내 SSIS 패키지가 임시 테이블에 대한 메타데이터를 획득하지 못하는 이유는 무엇이며 'WITH RESULT SETS'를 사용하여 문제를 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-27 14:23:21563검색

Why Does My SSIS Package Fail to Acquire Metadata for a Temporary Table, and How Can I Fix It Using `WITH RESULT SETS`?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.