通过任务计划程序的实体框架连接作为 NTAuthority/匿名登录进行连接



我有一个连接到database并发送一些电子邮件的Console Application(C#)。 当用户在Visual Studio中调试时,它运行良好,但是当我将其复制到服务器并作为服务帐户运行时domainAcctNotWorking出现以下错误。如果我将运行计划任务的帐户切换到我的domainlogin它工作正常。 为什么服务帐户尝试以NT AUTHORITYANONYMOUS LOGON身份登录,以及如何解决此问题的任何想法?domainAcctNotWorking是服务器上的管理员,在SQL Server中具有适当的权限。

System.Data.Entity.Core.EntityException:底层提供程序 打开时失败。---> System.Data.SqlClient.SqlException:无法打开 登录请求的数据库"我的数据库名称"。登录失败。 用户"NT 颁发机构\匿名登录"登录失败。

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"

简单,Integrated Security=True意味着当前用户将尝试使用其Windows身份登录到sql服务器。 您必须 1) 为要运行的服务创建一个用户,并将服务配置为在此用户下运行它,然后向此用户授予数据库中的权限,或者 2) 使用用户名/密码创建 sql 登录名并在连接字符串中使用该用户名/密码。

下面是了解如何在用户帐户下运行服务的起点

以域帐户身份运行 Windows 服务所需的最低权限

这是创建 SQL Server 登录名的起点

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

虽然,老实说,这似乎过于复杂。 只需使用 SSMS 登录到服务器,然后右键单击"安全"文件夹并创建新的登录名。 这很清楚。 然后,在数据库中为该登录名创建一个用户(相同的过程,但安全文件夹位于数据库下)。 不太难。 然后切换Itengrated Security=TrueUser Id=myUsername; Password=myPassword;

我的偏好是在计算机上创建一个用户帐户,除了运行服务所需的权限之外,该帐户没有其他权限,然后在sql Server中为此帐户创建一个登录名和用户,该帐户也被锁定为运行所需的最低权限。 如果您以前从未这样做过,正确执行此操作可能会相对复杂。 然而,这是有益的,并将获得宝贵的经验,您将在职业生涯中发挥巨大作用。

至少,如果使用快速且脏的SQL登录方法,请加密连接字符串:https://msdn.microsoft.com/en-us/library/89211k9b(v=vs.110).aspx

最新更新