2016-10-18 3 views
1

데이터베이스 서버 (서버 B)에서 저장 프로 시저를 실행하는 SSIS 서버 (서버 A)에서 SQL 작업을 통해 실행되는 SSIS 패키지가 있습니다. 이 저장 프로시 저는 SSIS 서버 (서버 A)에있는 파일 공유에서 대량 삽입을 수행합니다. 그러나 저장 프로 시저가 실행될 때마다 다음 오류와 함께 실패합니다.파일 공유에서 읽는 SSIS 패키지 실행 프로 시저 문제

멤버십 프로세스 실행 : 오류 : "exec storedprocname?,"쿼리가 실행됩니다. "\ ServerA \ TestLoads \ Membership \ Processing \ filename.csv"파일을 열 수 없으므로 대량로드 할 수 없습니다. 운영 체제 오류 코드 5 (액세스가 거부되었습니다.) ". 가능한 실패 이유 : 쿼리, "ResultSet"속성이 올바르게 설정되지 않았거나 매개 변수가 올바르게 설정되지 않았거나 올바르게 연결되지 않았습니다.

나는이 문제가 사용 권한과 관련되어 있음을 확신합니다. 파일을 데이터베이스 서버 (서버 B)에 저장하면 처리됩니다. 또는 proc을 수동으로 실행하면 작동합니다.

서버 A에서 작업을 실행하면 해당 서버의 서비스 계정으로 실행됩니다. 이 계정은 서버 A 및 서버 B (SQL의 관리자 및 서버)에 대한 모든 권한을가집니다. 무슨 일이 벌어지고 있는지는 자격증이 처음으로 통과하는 것 같지만, 일단 저장된 proc이 실행되면 계속되지 않습니다. 나는 서버 A (SSIS 서버)에서 wireshark를 실행하여 공유에 액세스 할 수있는 것을보고 더 많은 정보를 얻으려고합니다. 내가 찾은 것은 계정 정보가 전달되지 않았으며 단지 공백이었습니다.

나는 모든 사람들에게 공유에 대한 액세스 권한을 부여하고, 게스트 계정을 활성화하고, 익명의 사용자를 허용하는 등의 작업을 할 수 있는지 알아보기 위해 많은 단계를 밟았습니다. 문제를 좁히려 고 노력했다. 그 중 누구도 일하지 않았습니다.

WITH EXECUTE AS OWNER를 사용하려면 저장된 proc을 수정 해 보았습니다. 여전히 작동하지 않았지만 다른 오류가 발생했습니다. 또한 다른 계정으로 실행하려고 시도하고 매번 같은 오류가 발생했습니다.

멤버십 프로세스 실행 : 오류 : "exec [storedprocname]?,?" 다음 오류로 실패했습니다 : "Windows NT 그룹/사용자에 대한 정보를 얻을 수 없습니다 '', 오류 코드 0x5.". 가능한 실패 이유 : 쿼리, "ResultSet"속성이 올바르게 설정되지 않았거나 매개 변수가 올바르게 설정되지 않았거나 올바르게 연결되지 않았습니다.

온라인으로 찾은 다양한 해결책을 시도해 보았습니다. 지금까지 아무 것도 시도하지 않았지만 지금까지 아무 것도 시도하지 않았습니다.

나는 그것이 이상적인 해결책이 아니라고 생각합니다. 나는 SSIS를 사용하여 처음에 파일을로드 한 다음 나머지 프로세스에서 SQL을 사용하는 개발자들에게 인상을주었습니다. 그러나 SQL은 파일 시스템을 건드려야하기 때문에 실패합니다. 그리고이 단계에서는 이것을 다시 작성할 수있는 옵션이 없습니다. 또한이 프로세스는 파일을 데이터베이스 서버 (서버 B)로 옮기면 작동하지만 데이터베이스 서버에서 처리되는 파일을 가져 오는 SSIS 서버가 필요합니다.

현재 해결 방법을 사용할 수있는 방법에 대한 아이디어가 있으십니까? 기본적으로 SSIS 패키지를 실행하고 해당 프로세스 동안 저장된 proc을 통해 파일 공유에 자격 증명을 전달하는 방법이 필요하다고 생각합니다.

우리는 Windows Server 2012 R2를 서버와 SQL Server 2012 sp3 개발자 버전 모두에서 사용하고 있습니다.

도움 주셔서 감사합니다.

+0

파일 시스템 폴더의 모든 사용자에게 전체 액세스 권한을 부여하여 사용 권한을 제한하려고 시도 했습니까? –

+0

네, 어디서나 모든 권리가 있습니다. 나는 심지어 서버의 로컬 정책에 들어가서 서버를 허용하기 위해 더 느슨하게했습니다. 내가 뭘했는지 상관없이 여전히 같은 오류 – Dustin

+0

그런 다음 그것은 밖으로 권한을 규칙 것 같습니다. 수동으로 proc을 실행하면 작동하므로 어쩌면 패키지의 매개 변수를 proc로 올바르게 전달하지 못할 수도 있습니다. 전달 된 내용을 확인하기 위해 프로파일 러를 사용 했습니까? –

답변

0

이전에이 문제가 있었는데 아직 완전히 이해하지 못했습니다. Kerberos 인증,하지만 저를 위해 고쳐졌습니다. 이는 인증의 이중 홉 (double-hop) 즉 SQL Server를 통해 SSIS에서 네트워크 서버로 전송되는 신용과 관련이 있습니다.

SQL 서버용 Kerberos 인증을 설정해보십시오. 여기에 스크린 샷 =>Setup Kerberos Authentication for SQL Server

enter image description here

나는 이것이 "링크 전용"대답처럼 이해하지만, 내가하고 싶지 않은 복사 - 붙여 넣기 & 표절 상세한 단계별 지침이 있습니다 저자의 독창적 인 작품 즉 블로그 게시물, 따라서 링크.

+0

시도해 볼 수있게되면이 파일을 보내고 답장합니다. – Dustin

+0

이러한 단계를 수행했지만 여전히 작동하지 않습니다. 하지만 한 가지 다른 점이 있습니다. 모든 단계를 완료하고 SQL 스크립트를 실행하여 블로그 끝 부분의 인증을 확인한 후에도 내 결과는 여전히 kerberos가 아니라 NTLM이라고 말합니다. 이 서버 시간을지나면서 NTLM을 계속 보여줍니다. – Dustin