반응형

SQL Server 대상에서 Global\DTSQLIMPORT 에러

 

한대성

MS SQL Server MVP

에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자

 

 

“SSIS 파일 매핑 개체 'Global\DTSQLIMPORT’() 열 수 없으므로 대량 로드할 수 없습니다.”

 

 

데이터 흐름 작업의 데이터 흐름 대상에는 SQL Server에 최적화 된 대상 개체인 SQL Server 이 있습니다.

 

 

대상 개체가 SQL Server인 경우에 OLE DB 대상보다 우수한 성능을 내는 대상 개체입니다.

하지만, SQL Server 대상 서버가 패키지가 실행되는 동일한 서버(로컬 서버)인 경우에는 정상적으로 처리되지만, 다른 서버(원격 서버)인 경우에는 에러가 발생합니다.

 

 

예를 들어 다음과 같은 경우에는 정상적으로 수행됩니다.

 

 

하지만, 만약 SQL Server 대상의 서버가 다른 서버인 경우에는 다음과 같이 에러가 발생합니다.

 

 

 

 

[SQL Server 대상[43]] 오류: SSIS 오류 코드 DTS_E_OLEDBERROR.  OLE DB 오류가 발생했습니다. 오류 코드: 0x80040E14. OLE DB 레코드를 사용할 수 있습니다. 원본: "Microsoft SQL Native Client"  Hresult: 0x80040E14  설명: "SSIS 파일 매핑 개체 'Global\DTSQLIMPORT'() 열 수 없으므로 대량 로드할 수 없습니다. 운영 체제 오류 코드 2(지정된 파일을 찾을 수 없습니다.)입니다. Windows 보안을 통해 로컬 서버에 액세스하고 있는지 확인하십시오.".

 

이에 대해 온라인 도움말에는 다음과 같이 나와 있습니다.

 

 

해결 방법(or 처리 방법)

온라인 도움말에 언급되어 있는 것과 같이 전역 개체 만들기권한을 부여하더라도 여전히 에러가 발생합니다.

 

 

 

정확한 원인에 대해서는 나와있지 않지만, SQL Server 대상을 이용할 경우 다음과 같은 형태의 쿼리가 실행됩니다.

BULK INSERT [dbo].[Destination]

FROM 'Global\DTSQLIMPORT              0000000000000c1c000000000096c5a8'

WITH (DATAFILETYPE = 'DTS_Buffers', CODEPAGE = 'RAW', CHECK_CONSTRAINTS, TABLOCK)

 

메모리에 Global\DTSQLIMPORT 라는 개체를 만들어서 이를 이용하는 방식인 듯 하지만 이에 대한 정확한 설명이나 자료를 못 찾겠네요.

 

현재까지 이리저리 찾고 테스트 한 후의 결론은

 

SQL Server 대상 개체는 로컬 서버, 즉 패키지를 실행하는 서버와 동일한 데이터베이스 서버인 경우에만 사용하며 원격 서버일 경우에는 OLE DB 대상을 이용하시기 바랍니다.

 

※ 본 의견은 저의 개인적인 의견일 뿐이며 마이크로소프트의 공식적인 사항은 아닙니다. 혹시나 이를 해결하신 경험이 있거나 보충 설명 사항이 있으신 분들은 언제든지 댓글이나 메일, 게시글로 알려주시기 바랍니다.

 



좋은 글 감사합니다.
BOL을 찾아보니 아래와 같은 문구가...

SQL Server 대상은 로컬 SQL Server 데이터베이스에 연결하고 SQL Server 테이블 및 뷰로 데이터를 대량 로드합니다. 원격 서버의 SQL Server 데이터베이스에 액세스하는 패키지에서는 SQL Server 대상을 사용할 수 없습니다. 이러한 패키지에서는 대신 OLE DB 대상을 사용해야 합니다.

좋은 하루 되세요.!!

반응형

+ Recent posts