首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Windows服务的Windows身份验证连接到sql-server?

如何使用Windows服务的Windows身份验证连接到sql-server?
EN

Stack Overflow用户
提问于 2019-04-29 07:46:43
回答 2查看 0关注 0票数 0

我在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帐户登录?

EN

回答 2

Stack Overflow用户

发布于 2019-04-29 16:30:03

当服务控制管理器启动Windows服务时,该过程作为特定用户执行,就像在操作系统上运行的任何其他进程一样。

有许多“内置”用户帐户用于运行Windows服务。如果查看“计算机管理”中的“服务”节点,您可以看到完整的Windows服务集及其运行的帐户(在Windows 7中称为“登录身份”)。

根据我的经验,当我们希望Windows服务使用集成安全性与数据库通信时,我们采用以下第二种方法:

1)将其中一个内置帐户指定为“登录身份”帐户,并将此帐户添加为具有相应数据库权限的SQL Server实例上的登录名

2)使用/创建要使用的Windows服务的本地或域帐户,然后将此帐户添加为具有相应数据库权限的登录名。安装程序可以在安装服务期间提示用户帐户凭据。

我不能声称自己足够专业地指出每种方法的所有优点和缺点,但是值得考虑以下方面:

  • 方法1所有以所选内置帐户运行的服务和流程都有权访问您的数据库。方法2不是这种情况。
  • 使用方法1,密码配置由机器本身管理,但是使用方法2,密码可以由管理员管理,并且还符合任何所需的安全策略。

我希望这有帮助

票数 0
EN

Stack Overflow用户

发布于 2019-04-29 16:55:59

正如mjv所说,您需要为本地服务帐户授予对数据库的访问权限,或者使用其他帐户来运行该服务。您询问了如何以编程方式更改帐户,这是通过为服务创建安装程序并将“帐户”属性更改为“用户”,然后指定用户名和密码来运行服务来完成的。

如果滚动到底部,以下链接包含有关创建安装程序的信息:

http://msdn.microsoft.com/en-us/library/aa984464(VS.71).aspx

虽然以下提供了有关Account属性的更多详细信息:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller.account(VS.71).aspx

希望这可以帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档