我已经用C#对Windows服务进行了编程,该服务应使用System.Data.SqlClient连接到SQL Server 2005 Express数据库。
由于Microsoft倾向于使用Windows身份验证而不是SQL身份验证,因此我尝试使用可信连接/集成安全性连接到数据库。
但是,这不起作用,因为我得到了System.Data.SqlClient.SqlException:用户登录失败
“NT AUTHORITY\LOCAL服务”。
是否可以使用其他Windows帐户登录?
最佳答案
目前,该服务当前似乎在LocalService Account下运行,并且该服务帐户当前未在SQL上获得授权。
可以通过以下两种方法之一解决此问题:在SQL授权的帐户下运行该帐户,或在SQL中添加LocalService帐户作为登录名。具体来说:
编辑:第一种方法可能是更可取的,因为在系统中如此普遍地找到LocalService帐户,以至于授予它对SQL的访问权限将暴露SQL,并且使用它的特定服务或驱动程序的数据库将受到损害。而是通过引入特定帐户,可以更好地控制谁访问SQL对象以及如何访问。当然,这会带来在系统级别(不是SQL)上根据应授予的特权配置这种帐户的问题,并且取决于基础服务的工作,可能需要使该帐户相当强大,因此在其他方面有潜在的责任。
关于c# - 如何通过Windows服务中的Windows身份验证连接到sql-server?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2244825/