Entity Framework Connection через планировщик задач подключается как NTAuthority/Anonymous Logon
У меня есть Console Application
(C#
), который подключается к database
и отправляет несколько писем. Он работает нормально, когда пользователь отлаживает Visual Studio
, но когда я копирую это на сервер и запускаю как учетную запись службы domain\AcctNotWorking
Я получаю ошибку ниже. Если я переключу учетную запись, которая запускает запланированную задачу на мой domain\login
это работает отлично. Почему учетная запись службы пытается войти как NT AUTHORITY\ANONYMOUS LOGON
а есть идеи как это исправить? domain\AcctNotWorking
является администратором на сервере и имеет соответствующие разрешения в SQL Server
,
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
означает, что текущий пользователь будет пытаться войти на сервер sql, используя свое удостоверение Windows. Вы должны либо: 1) создать пользователя для запуска службы и настроить службу для ее запуска под этим пользователем, затем дать этому пользователю разрешения в базе данных, либо 2) создать логин sql с именем пользователя / паролем и использовать что в вашей строке подключения.
Вот отправная точка, чтобы узнать о запуске службы под учетной записью пользователя
Минимальные права, необходимые для запуска службы Windows в качестве учетной записи домена
и вот отправная точка для создания логинов сервера sql
Хотя, если честно, это кажется слишком сложным. Все, что вам нужно сделать, это войти на сервер с помощью SSMS, щелкнуть правой кнопкой мыши на папке "Безопасность" и создать новый логин. Это довольно ясно. Затем вы создаете пользователя в базе данных для этого логина (тот же процесс, но папка безопасности находится под базой данных). Не слишком сложно. Затем переключите Itengrated Security=True
из за User Id=myUsername;
Password=myPassword;
Я предпочел бы создать учетную запись пользователя на компьютере, который не имеет никаких прав, кроме тех, которые необходимы для запуска службы, а затем создать имя входа и пользователя на сервере sql для этой учетной записи, который также ограничен минимальными правами, необходимыми для функция. Делать это правильно может быть относительно сложно, если вы никогда не делали этого раньше. Это, однако, полезно и принесет вам ценный опыт, который вы будете использовать для достижения больших результатов в своей карьере.
По крайней мере, если вы используете быстрый и грязный метод входа в SQL, зашифруйте строку подключения: https://msdn.microsoft.com/en-us/library/89211k9b(v=vs.110).aspx