2017-05-19 2 views
1

database에 연결하는 Console Application (C#)을 가지고 있으며 일부 전자 메일을 보냅니다. 사용자가 Visual Studio에서 디버깅 할 때 정상적으로 실행되지만 서버에 복사하여 서비스 계정으로 실행하면 domain\AcctNotWorking 오류가 발생합니다. 예약 된 작업을 실행하는 계정을 내 domain\login으로 전환하면 정상적으로 작동합니다. 서비스 계정이 NT AUTHORITY\ANONYMOUS LOGON으로 로그인하려고하는 이유는 무엇입니까? domain\AcctNotWorking은 서버의 관리자이며 적절한 사용 권한은 SQL Server입니다.Entity Framework 작업 스케줄러를 통한 연결은 NTAuthority/Anonymous Logon으로 연결합니다.

System.Data.Entity.Core.EntityException : 기본 제공 업체 이 (가) 열기에 실패했습니다. ---> System.Data.SqlClient.SqlException : 데이터베이스 "MyDatabaseName"로그인 요청한 열 수 없습니다. 로그인에 실패했습니다. 'NT AUTHORITY \ ANONYMOUS LOGON'사용자가 로그인하지 못했습니다.

Connection String: add name="ApplicationEntities" connectionString="metadata=res://*/ApplicationEntities" .csdl|res://*/ApplicationEntities" .ssdl|res://*/ApplicationEntities" .msl;provider=System.Data.SqlClient;provider connection string="data source=SQL-Server-Name;initial catalog=DatabaseName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" 

답변

1

쉬운, Integrated Security=True는 현재 사용자가 윈도우 ID를 사용하여 SQL 서버에 로그인을 시도합니다 의미합니다. 당신은 1) 서비스를 실행할 사용자를 생성하고,이 사용자로 서비스를 실행하도록 구성한 다음 데이터베이스에서이 사용자에게 권한을 부여하거나 2) 사용자 이름/암호로 SQL 로그인을 생성하고 그 연결 문자열에.

가 여기에 사용자 계정

Minimum rights required to run a windows service as a domain account

을 서비스를 실행에 대해 배울 출발점 여기에 SQL 서버 로그인 정직하게,하지만

https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-login

를 만들기위한 출발점이다, 그건 지나치게 복잡해 보입니다. SSMS를 사용하여 서버에 로그인하고 보안 폴더를 마우스 오른쪽 단추로 클릭 한 다음 새 로그인을 만드십시오. 꽤 분명합니다. 그런 다음 해당 로그인에 대해 데이터베이스에 사용자를 생성합니다 (동일한 프로세스이지만 보안 폴더는 데이터베이스 아래에 있음). 그리 어렵지 않습니다. 그런 다음에 밖으로 Itengrated Security=True 전환 User Id=myUsername; Password=myPassword;

내 선호하고있다이 계정에 대한 SQL Server의 로그인 & 사용자를 생성이 서비스를 실행하는 데 필요한 것보다 다른 권리가없는 시스템에서 사용자 계정을 생성하는 것입니다 은 기능을 수행하는 데 필요한 최소 권한으로 잠겨 있습니다. 이전에 해 본 적이 없다면이 작업을 올바르게 수행하는 것이 상대적으로 복잡 할 수 있습니다. 그러나 보람을 느끼며 경력에 큰 영향을 줄 수있는 귀중한 경험을 얻을 것입니다. https://msdn.microsoft.com/en-us/library/89211k9b(v=vs.110).aspx

+0

그것은 그 사용하여 SQL 로그인 불구하고 언급해야 당신이 원하는 것을 필요는 없다 : 당신은 신속하고 더러운 SQL 로그인 방법으로 갈 경우

는 적어도, 연결 문자열을 암호화합니다. 도메인 계정을 사용하는 것이 유효한 옵션입니다. 그것은 단지 제대로 수행되어야합니다. – Tipx

+0

다르지만 일반적으로 암호화 된 연결 문자열을 사용하는 등의 작업을 수행하는 것이 일반적입니다. https://msdn.microsoft.com/en-us/library/89211k9b(v=vs.110).aspx – Will

+1

아, 옵션이 있습니다, 당신이 그것을하고 싶을 때가 있습니다. 나는해서는 안된다는 말은하지 않았다. 단지 좋은 옵션이 아닙니다. :-) – Tipx