2017-10-20 1 views
1

웹 응용 프로그램, 코드 첫 번째 데이터베이스를 만드는 데이터 액세스 레이어 및 데이터베이스의 일부 데이터를 동기화하는 데 사용하는 Windows 서비스의 세 가지 프로젝트가있는 솔루션이 있습니다. 다른 두 프로젝트에서 데이터 레이어를 참조했습니다. 웹 응용 프로그램 구성 및 서비스 구성에서 동일한 연결 문자열을 사용하고 있습니다. 모든 것이 웹 응용 프로그램에서 잘 작동하지만 데이터 컨텍스트에 액세스하면 모든 테이블이 비어 있습니다 (Enumeration 결과가 없음). 나는 오류가 없다. 내 질문에 내가 분명히 뭔가 빠져있는 것일까 요?Windows 서비스 및 Entity Framework

<add name="DataContext" connectionString="Data Source=(localdb)\MSSQLLocalDB; Database=Purple Moose; Integrated Security=True; User Id=purplemoose; Password=password; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> 
+0

데이터베이스는 어디에 있습니까? 왜 비어 있는지 확인 했습니까? – nvoigt

+0

로컬 데이터베이스입니다. 그것은 실제로 비어 있지 않습니다. SSMS에서 액세스하려면 동일한 자격 증명을 사용하고 모든 것이 있습니다. 또한 웹 응용 프로그램에서 데이터를 액세스 할 수 있지만 Windows 서비스를 디버깅 할 때 모든 테이블이 비어 있습니다. – sandra

+0

연결에 동일한 사용자를 사용합니까? 연결 문자열은 어떻게 보이며, 사용자/암호를 가지고 있습니까? 아니면 현재 Windows 사용자를 사용하여 인증합니까? – nvoigt

답변

0

연결 문자열은 데이터베이스에 로그인하기 위해 현재 Windows 사용자를 사용합니다. , 통합 보안 (Windows 사용자) 사용자 이름/암호를 지정했습니다. 이 경우

:

Windows 인증 SQL Server 로그인보다 우선합니다. 사용자 이름과 암호뿐만 아니라 Integrated Security = true를 지정하면 사용자 이름과 암호가 무시되고 Windows 인증이 사용됩니다.

그래서 항상 현재 Windows 사용자로 데이터베이스에 들어가게 될 것이며, 이는 아마도 Local System이거나 서비스와 비슷한 것일 것입니다. 어느 쪽이든, 사용자 이름/비밀번호 인증을 사용하려면 을 제거하고Integrated Security=true을 삭제하거나 false로 설정하십시오.

+0

정말 좋은 지적입니다. 고마워요. 나는 그걸 제거하고 다른 모든 것을 그대로 뒀다. 웹 앱에서도 동일하게 사용했습니다. 모든 것이 여전히 웹 앱에서 작동하지만 Windows 서비스의 경우 '사용자가 로그인하지 못했습니다.'라는 오류 메시지가 표시됩니다. 아직도 진전이 있습니다. 그런데 왜 웹 앱에서 똑같은 말을하지 않습니까? – sandra

+0

@sandra LocalDB를 사용하고있는 것으로 나타났습니다. LocalDB는 운영 체제의 사용자 *에게 로컬입니다. 그것은 로컬 DB의 모든 복잡함을 지나치는 데 너무 멀리까지 이어질 것입니다. 자세한 내용은 [여기] (https://docs.microsoft.com/en-US/sql/database-engine/configure-windows/sql-server-2016-express-localdb)를 참조하십시오. – nvoigt

+0

당신은 최고입니다, 고마워요. – sandra

관련 문제