Excel 파일을 SQL Server 테이블로 가져 오는 SSIS 패키지를 만들었습니다.
SSIS 패키지는 내 컴퓨터에서 로컬로 실행할 때 아무런 문제없이 실행되지만 패키지가 예약 된 서버에서 패키지를 실행할 때 아래 오류가 발생합니다 (텍스트 파일에서 SSIS 로깅 사용에 대한 오류가 발생합니다).
연구 결과, 내가 찾은 유일한 권장 사항은 Run64BitRuntime 속성을 false로 설정했지만 여전히 운이 없었습니다. 오류가 64 비트와 관련하여 아무것도 지정하지 않았기 때문에 이것이 내 오류의 원인인지 의심합니다 (내가 찾은 기사에서와 같이).
또한 서버에 적절한 Excel 드라이버가 없을 수도 있다고 생각했지만 일반적으로 오류 메시지에 등록되지 않은 드라이버에 대한 내용이 표시되기 때문이라고 생각하지 않습니다.
현재 서버에 대한 원격 액세스 권한이 없습니다. 패키지를 폴더에만 업로드 한 다음 응용 프로그램에서 패키지를 실행할 수 있으므로 내가 만든 유일한 오류 메시지는 내가 만든 텍스트 오류 로그에 있습니다.
오류 코드 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. 연결 관리자 "인비 전"에 대한 AcquireConnection 메서드 호출이 오류 코드 0xC0209303과 함께 실패했습니다. AcquireConnection 메소드 호출이 실패한 이유에 대한 자세한 정보와 함께이 전에 오류 메시지가 게시 될 수 있습니다.
"구독"은 엑셀 연결 관리자의 이름입니다.
표현식을 사용하여 Excel 파일 경로 및 연결 문자열을 채 웁니다.
연결 문자열 표현식은 다음과 같습니다.
"Provider = Microsoft.ACE.OLEDB.12.0; Data Source ="+ @ [User :: SourceFilePath] + "; 확장 속성 = \"EXCEL 12.0 XML; HDR = YES \ ";"
SSIS Pacakge는 Windows 사용자 이름 / 계정으로 실행됩니다. 웹 서비스 계정 일 수 있다고 생각합니다. (BDS_sprtIIS)
이 패키지 문제를 로컬 컴퓨터에서만 작동하지만 패키지가 배포되는 실제 서버에서는 작동하지 않는 방법에 대한 솔루션이나 제안이 있습니까?
다른 포럼에서 아래 답변을 찾았습니다. 문제의 원인은 무엇입니까? 그들은 기본적으로 Excel 연결 관리자가 어떤 이유로 사용자 임시 폴더에 액세스하려고 시도하고 해당 폴더에 액세스 할 수 없으면 실패합니다.
또한 Microsoft.JET.OLEDB.4.0 드라이버가 로그인 한 사용자의 프로필 아래에서 temp 디렉토리를 읽으려고 시도 함을 알았습니다.
.
... 하위 도메인 계정을 사용하여 SQL 에이전트를 실행하고 프록시 계정을 사용하여 SSIS 패키지를 실행합니다. Procmon이 저에게도 확인한대로 맞습니다. 프록시 계정에 프로필의 임시 디렉토리 (C : \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp)에 대한 권한을 부여했으며 제대로 작동했습니다!
SQL Server 작업 또는 프록시 계정을 사용하고 있지 않습니다. 패키지는 단순히 명령 줄 스크립트를 통해 Windows 계정으로 실행됩니다.
Windows 계정에 파일에 대한 액세스 권한이 있지만 "TEMP"폴더에 대한 액세스 권한이 있는지 확실하지 않습니다 (패키지에서 참조하지 않으므로 해당 폴더에 액세스해야하는 이유를 모르겠습니다) ...