我在C#中编写了一个Windows服务,它应该使用System.Data.SqlClient连接到SQL-Server 2005 Express数据库。
由于Microsoft更喜欢使用Windows身份验证而非SQL身份验证,因此我尝试使用Trusted Conenction / Integrated Security连接到数据库。
但是,这不起作用,因为我得到一个System.Data.SqlClient.SqlException:用户'NT AUTHORITY \ LOCAL SERVICE'登录失败。
是否可以使用其他Windows帐户登录?
发布于 2019-04-29 16:30:03
当服务控制管理器启动Windows服务时,该过程作为特定用户执行,就像在操作系统上运行的任何其他进程一样。
有许多“内置”用户帐户用于运行Windows服务。如果查看“计算机管理”中的“服务”节点,您可以看到完整的Windows服务集及其运行的帐户(在Windows 7中称为“登录身份”)。
根据我的经验,当我们希望Windows服务使用集成安全性与数据库通信时,我们采用以下第二种方法:
1)将其中一个内置帐户指定为“登录身份”帐户,并将此帐户添加为具有相应数据库权限的SQL Server实例上的登录名
2)使用/创建要使用的Windows服务的本地或域帐户,然后将此帐户添加为具有相应数据库权限的登录名。安装程序可以在安装服务期间提示用户帐户凭据。
我不能声称自己足够专业地指出每种方法的所有优点和缺点,但是值得考虑以下方面:
我希望这有帮助
发布于 2019-04-29 16:55:59
正如mjv所说,您需要为本地服务帐户授予对数据库的访问权限,或者使用其他帐户来运行该服务。您询问了如何以编程方式更改帐户,这是通过为服务创建安装程序并将“帐户”属性更改为“用户”,然后指定用户名和密码来运行服务来完成的。
如果滚动到底部,以下链接包含有关创建安装程序的信息:
http://msdn.microsoft.com/en-us/library/aa984464(VS.71).aspx
虽然以下提供了有关Account属性的更多详细信息:
希望这可以帮助。
https://stackoverflow.com/questions/-100006690
复制相似问题