2011-02-15 7 views
2

동일한 컴퓨터의 데이터베이스에 연결하는 데 사용되는 WCF 서비스가 있습니다. 이후 우리는 데이터베이스와 서비스를 서로 다른 컴퓨터 (서로를 볼 수있는 동일한 물리적 상자에있는 두 가상 컴퓨터)로 이동했습니다.WCF를 통해 다른 가상 컴퓨터의 데이터베이스에 어떻게 연결할 수 있습니까?

데이터베이스 컴퓨터 (WCFServiceLogin)에 표준 Windows 로그인을 설정하고 해당 Windows 로그인을 가리키는 데이터베이스에 데이터베이스 로그인을 추가하고 해당 데이터베이스 로그인을 가리키는 데이터베이스에 SQL 사용자를 추가하고 변경했습니다 비주얼 스튜디오 프로젝트 설정에서 연결 문자열 : 나는 데이터베이스를 접촉 전화를 걸 때

Data Source=NewServer;Initial Catalog=MyDB;Integrated Security=True; 
UserID=WCFServiceLogin;Password=password 

, 나는이 오류를 얻을 :

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

어떻게 성공적를에 내 WCF 작업을 얻을 수 있습니다 새 컴퓨터의 데이터베이스에서 읽습니다. 올바른 로그인을 노래하나요?

업데이트

은 내가 조금 더 멀리를 얻을 수 있었다 것 같아요. NewServer의 해당 암호와 동일한 암호로 서비스가있는 시스템에 WCFServiceLogin 로그인을 작성했습니다. 그런 다음이 로그인으로 실행되도록 WCF 서비스를 설정하고 Windows 인증을 사용하도록 SQL 로그인을 변경하고 연결 문자열에서 사용자 ID와 암호를 제거했습니다. 마지막으로 exec sp_grantlogin 'NewServer \ WCFServiceLogin'을 실행했습니다.

지금은 생각이 오류를 받고 있어요 : 그냥 그렇게 실패의 IT 올바른 사용자로 로그인하려고처럼

Cannot open database "MyDB" requested by the login. The login failed. Login failed for user 'NewServer\WCFServiceLogin'.

그래서 것 같다.

+0

IIS 내부에서 WCF 서비스가 실행되고 있습니까? – Russell

+0

AD에 WCFServiceLogin이 있습니까? 그렇지 않은 경우 WCF 시스템에서이 로그인을 사용하는 데 어려움이있을 수 있습니다. – Russell

답변

1

오류는 서비스가 WCFServiceLogin 권한 정보를 사용하고 있지 않음을 나타냅니다.

IIS에서 실행되는 WCF 서비스의 경우 응용 프로그램 풀의 ID가 WCFServiceLogin으로 설정되어 있는지 확인하십시오. 그렇지 않으면 WCF 서비스를 실행하는 app/service가 WCFServiceLogin 신임하에 실행 중인지 확인하십시오.

또는 코드 내부에서 사용자를 소멸시킬 수 있지만 유지 관리가 어려울 수 있습니다.

또한 WCFServiceLogin이 Windows 계정 인 경우 연결 문자열의 사용자 이름/암호가 작동하지 않습니다. 통합 보안을 유지해야합니다.

편집 :

은 통합 인증은 창 (Active Directory 도메인 또는 기계) 로그인 계정을 사용하고 명확합니다. 연결 문자열은 질문에서와 같이 integrated = true를 사용합니다. 이 경우 사용자 이름과 암호 필드가 없어야합니다. 연결은 프로세스가 실행중인 자격 증명을 사용합니다.

귀하의 질문에 대한이 솔루션의 문제점은 데이터베이스 서버 시스템에만 해당되므로 서비스 (프로세스)를 WCFServiceLogin으로 실행할 수 없다는 것입니다. 이것은 사용자 계정이 활성 디렉토리에 있었던 경우에만 실제로 작동 할 수 있습니다.

가능한 해결책은 SQL 인증 계정을 생성하는 것입니다. SQL 인증 계정은 SQL로 작성되었으며 Windows 사용자 이름에 매핑되지 않습니다. 연결 문자열에 사용자 이름과 암호를 지정하고 통합 보안 = true를 제거하십시오.

활성 디렉토리가 없으면 SQL 인증이 작동합니다.

이것이 차이점과 통합 보안이 컴퓨터 사용자 계정에서 작동하지 않는 이유를 분명히 밝히기를 바랍니다.

는 UPDATE :

오류 메시지는 다른 컴퓨터에 그대로 DB는 여전히 newserver의 \의 WCFServiceLogin 계정을 사용하여 인증 할 수없는 나타냅니다.

+0

이 서비스는 자체 호스팅됩니다. Windows 서비스의 네트워크 서비스 계정에서 실행 중입니다. 나는 그것을 바꿔야합니까? 데이터베이스와 다른 시스템에 있으므로 NewServer \ WCFServiceLogin으로 변경할 수 없습니다. 아니면 내가 할 수 있니? –

+0

다른 컴퓨터에서 Windows 사용자로 가장 할 수 있다고 생각하지 않습니다. 대개 활성 디렉토리를 사용하여 수행됩니다. 나는 최선의 방법은 앞으로 사용자/패스와 함께 SQL 계정을 사용하는 것이라고 생각합니다. – Russell

+0

연결 문자열에 자격 증명을 지정하여 수행중인 작업이 아닌가요? 통합 보안에 대해 조금은 이해하지 못합니다. 그렇다면 Windows 인증을 사용할 수없고 대신 SQL에 사용자 이름과 암호를 지정해야합니까? –

관련 문제