[SQL] SSIS 패키지는 임시 테이블의 메타 데이터를 가져 싶지 않다
SQLSSIS 패키지는 임시 테이블의 메타 데이터를 가져 싶지 않다
나는 여러 흐름을 포함하는 SSIS 패키지를 가지고있다.
각각의 흐름은 생성 후 채워집니다는 "준비"테이블을 만들기위한 책임이 있습니다. 이 테이블 전역 임시 테이블입니다.
나는 정확히 같은 다른 테이블, 위에서 언급 한 않는 한 별도의 흐름을 (I 패키지를하지 않았다) 추가. 그것은 어떤 테이블 이름 외에, 정확히 다른 사람과 동일하면서 그러나 어떤 이유로, 패키지,이 흐름에 간헐적으로 실패합니다.
팝업 계속 오류 :
창조의 표현 :
"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)
해결법
-
==============================
1.명시 적으로 메타 데이터를 정의하는 결과 세트와 함께 사용하면 SSIS가 sp_describe_first_result_set 단계를 건너 뛰고 사용자가 정의하는 메타 데이터를 사용할 수 있습니다. 거꾸로 당신이 SSIS가 (나를 위해, 그 성능이 많은 도움이) 임시 테이블이 포함 된 SQL을 실행하는 데 얻기 위해 이것을 사용할 수 있다는 것입니다; 단점은 수동으로 유지하고 아무것도 변경하는 경우이를 업데이트 할 필요가있다.
명시 적으로 메타 데이터를 정의하는 결과 세트와 함께 사용하면 SSIS가 sp_describe_first_result_set 단계를 건너 뛰고 사용자가 정의하는 메타 데이터를 사용할 수 있습니다. 거꾸로 당신이 SSIS가 (나를 위해, 그 성능이 많은 도움이) 임시 테이블이 포함 된 SQL을 실행하는 데 얻기 위해 이것을 사용할 수 있다는 것입니다; 단점은 수동으로 유지하고 아무것도 변경하는 경우이를 업데이트 할 필요가있다.
쿼리 샘플 (저장 프로 시저 :
EXEC ('dbo.MyStoredProcedure') WITH RESULT SETS ( ( MyIntegerColumn INT NOT NULL, MyTextColumn VARCHAR(50) NULL, MyOtherColumn BIT NULL ) )
쿼리 샘플 (단순 SQL :
EXEC (' CREATE TABLE #a ( Col INT ) INSERT INTO #a ( COL ) SELECT 1 AS Col SELECT Col FROM #a') WITH RESULT SETS ( (Col INT NOT NULL)) )
-
==============================
2.(일종의 해킹,하지만 작동 및 글로벌 임시 테이블의 사용을 변경할 필요가 없습니다) 또 다른 옵션에 "첫 번째 결과 집합을"가짜를 보내 실제 쿼리의 앞에 SET FMTONLY ON 명령을 사용하는 것입니다 올바른 열 구조 SSIS. 당신이 뭔가를 할 수 있습니다
(일종의 해킹,하지만 작동 및 글로벌 임시 테이블의 사용을 변경할 필요가 없습니다) 또 다른 옵션에 "첫 번째 결과 집합을"가짜를 보내 실제 쿼리의 앞에 SET FMTONLY ON 명령을 사용하는 것입니다 올바른 열 구조 SSIS. 당신이 뭔가를 할 수 있습니다
SET FMTONLY ON select 0 as a, 1 as b, 'test' as C, GETDATE() as D SET FMTONLY OFF select a, b, c, d from ##TempTable
SSIS는 sp_describe_first_result_set을 실행하면, 그것은 당신의 FMTONLY 명령의 메타 데이터 및 열 이름을 반환하고 시도조차하지 않기 때문에 사용자의 임시 테이블의 메타 데이터를 확인할 수없는 불평하지 않습니다.
-
==============================
3.당신이 SSIS 2012에서 작업하는 경우, 다음은 테이블의 메타 데이터를 가져 오기 위해 시스템 저장 프로 시저 sp_describe_first_result_set를 사용하며 임시 테이블을 지원하지 않습니다. 하지만 당신은 잘 작동에가는 테이블 변수와 열팽창 계수와 같은 다른 옵션을 갈 수 있습니다. https://connect.microsoft.com/SQLServer/feedback/details/629077/denali-engine-metadata-discovery-shuns-temp-tables
당신이 SSIS 2012에서 작업하는 경우, 다음은 테이블의 메타 데이터를 가져 오기 위해 시스템 저장 프로 시저 sp_describe_first_result_set를 사용하며 임시 테이블을 지원하지 않습니다. 하지만 당신은 잘 작동에가는 테이블 변수와 열팽창 계수와 같은 다른 옵션을 갈 수 있습니다. https://connect.microsoft.com/SQLServer/feedback/details/629077/denali-engine-metadata-discovery-shuns-temp-tables
-
==============================
4.나는 문제가 GUID 중복 문제에서 거짓말을 발견, (하나는 임시 테이블을 만들려면) 나는 요소를 복사하고 그들은 모두 복사에 같은 GUID를 받았다. 내 패키지에 모든 GUID를 다시 설정 도구를 사용하고이 내 문제를 해결했다.
나는 문제가 GUID 중복 문제에서 거짓말을 발견, (하나는 임시 테이블을 만들려면) 나는 요소를 복사하고 그들은 모두 복사에 같은 GUID를 받았다. 내 패키지에 모든 GUID를 다시 설정 도구를 사용하고이 내 문제를 해결했다.
감사!
-
==============================
5.우리가 준비를위한 임시 테이블을 사용하는 것과 같은 문제를했다. 약간의 시간을 소비 한 후, 작업 주위를 발견했다.
우리가 준비를위한 임시 테이블을 사용하는 것과 같은 문제를했다. 약간의 시간을 소비 한 후, 작업 주위를 발견했다.
데이터 흐름 작업의 OLE DB / ADO 대상에서 당신은 준비 테이블의 이름을 지정하는 곳.
대신 OPENROWSET의 SQL 명령에 AccessMode 속성을 변경하고 "#temp에서 선택 *"에 SQL 명령 속성을 지정합니다.
만세, 그 작업은 예상대로.
당신은 SQL 명령 이외의 액세스 모드를 지정할 때 여기 캐치는, SSIS는 테이블 / 뷰있을 것으로 기대하며 메타 데이터를 얻기 위해 호출 sp_describe_first_result_set에 SSIS를 변경했습니다. 당신은 SQL 명령을 지정할 때, 그렇게 운이 좋게 여전히 메타 데이터를 얻기의 옛날 방식을 사용하는 등 쿼리 나 SP 명령을 기다리고 있어요.
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/cfe1c7c1-910a-4f52-9718-c3406263b177/usage-of-temp-tables-in-ssis-2012?forum=sqlintegrationservices#cfe1c7c1-910a-4f52-9718-c3406263b177
from https://stackoverflow.com/questions/18346484/ssis-package-not-wanting-to-fetch-metadata-of-temporary-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 집계 함수와 SQL GROUP BY CASE 문 (0) | 2020.05.01 |
---|---|
[SQL] 하나 개의 출력을위한 두 개의 테이블을 결합 (0) | 2020.05.01 |
[SQL] PIP "심각한 오류 C1083을 mysqlclient 반환을 설치하지 : 파일을 열 수 없습니다 : '에서 mysql.h를': 그런 파일이나 디렉토리 (0) | 2020.05.01 |
[SQL] 는 SQL 쿼리 알려진 두 문자열 사이의 문자열을 선택합니다 (0) | 2020.05.01 |
[SQL] 기준 개체로 그룹 최대 절전 모드 (0) | 2020.05.01 |