我已经用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帐户作为登录名。具体来说:

  • 在服务管理控制台中更改服务运行的帐户。 (例如:计算机管理|服务和应用程序|服务,然后在有关服务上单击鼠标右键以获取“属性”)
  • 或者,在“Microsoft SQL Management Studio”中,将LSA帐户添加为登录名,并以可以访问所需数据库对象的方式设置此新主体(登录名)。

  • 编辑:第一种方法可能是更可取的,因为在系统中如此普遍地找到LocalService帐户,以至于授予它对SQL的访问权限将暴露SQL,并且使用它的特定服务或驱动程序的数据库将受到损害。而是通过引入特定帐户,可以更好地控制谁访问SQL对象以及如何访问。当然,这会带来在系统级别(不是SQL)上根据应授予的特权配置这种帐户的问题,并且取决于基础服务的工作,可能需要使该帐户相当强大,因此在其他方面有潜在的责任。

    关于c# - 如何通过Windows服务中的Windows身份验证连接到sql-server?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2244825/

    10-13 08:25
    查看更多