2015-01-08 5 views
1

SQL Server 2008 R2의 내 저장 프로시 저는 연결된 서버를 통해 여러 로컬 데이터베이스와 여러 원격 데이터베이스에서 쿼리를 실행하고 SSMS에서 실행하면 올바르게 작동합니다. sqlcmd 스크립트 사용 내 연결된 서버 쿼리가 연결되지 않습니다.

내가 연결된 서버의 연결 오류로 실패 sqlcmd 스크립트에서 같은 임원을 실행

...

연결된 서버 "SQLNCLI10" "BLAHBLAH.BLAH OLE DB 공급자의 데이터 원본 개체를 초기화 할 수 없습니다 .BLAH.ORG ". 누군가가 sqlcmd 스크립트가 작동하도록하는 방법에 저를 조언 해 줄 수 있습니다 많은 경우

함께 SQLCMD 호출은 ...

sqlcmd -U sa -P myPassword-S localhost 
     -i C:\SS_DB_TRACK\job_run_periodic_nightly.sql 
     -o C:\SS_DB_TRACK\job_run_periodic_nightly.lst 

감사합니다.

제이

+0

SSMS를 사용할 때 "sa"로그인과 암호 또는 Windows 인증을 통해'(local)'/ default 인스턴스에 연결합니까? –

+0

감사합니다, 나는 Windows 인증을 위해 -E를 사용했고 훌륭하게 작동합니다 : sqlcmd -S localhost -E ..... – user3746424

답변

0

대신 "LinkedServerName"[LinkedServerName] 시도

+1

의견을 보내 주셔서 감사합니다. 그러나 "BLAHBLAH.BLAH.BLAH.ORG"에 대한 질문은 , 귀하의 의견은 도움이되지 않습니다 - "BLAHBLAH.BLAH.BLAH.ORG"는 오류 메시지에 내 쿼리 코드가 아닙니다. 내 쿼리는 연결된 서버 이름 주위에 대괄호를 사용했습니다. 다시 말하지만, SSMS에서 호출 될 때 모든 것이 잘 작동하지만 sqlcmd 스크립트에서 호출 될 때 실패합니다. 나는 모든 것을 시도해 왔고 배치 파일을 관리자 등으로 실행했다. – user3746424

1

당신이보고있는 차이 때문에 다른 보안 컨텍스트에서 실행 가능성이 높습니다. sqlcmd 매개 변수는 로그인하는 데 sa으로 표시됩니다 (일반적으로 좋은 생각은 아닙니다). 따라서 SSMS에서 다른 동작이 발생하면 Windows 인증을 사용하여 동일한 서버에 로그인하고있는 것입니다. SQL Server 인증을 sa으로 사용하여 SSMS를 통해 해당 서버에 로그인 한 경우 동일한 오류가 표시됩니다. 같은 라인에 따라 sqlcmd 인증을 신뢰할 수있는 연결 (예 : Windows 인증)에 대해 -E으로 변경하면 제대로 작동해야합니다 (실제로 작동 한 것으로 보입니다). 이 프로세스를 보안 컨텍스트에서 실행하지 않으려면 링크 된 서버의 보안 설정을 확인하여 두 개의 다른 로그인이 연결된 서버를 사용하여 다른 응답을받는 이유를 확인해야합니다. 이상적으로는 다른 sa 로그인을 사용하여이 프로세스를 처리 할 수도 있습니다 (이 아닌 서버 역할의 구성원 인).