怎样生产可以访问sqlserver数据库的windows服务

问题点:

Windows服务中用Windows身份验证(在连接字符串中表示为integrated security=SSPI或integrated security=true)访问sqlserver时,外围配置不当将无法使用。

出现异常的组合条件

  • 访问sqlserver采用Windows身份验证

如Data Source=(local); Initial Catalog=master;Integrated Security=SSPI;Persist Security Info=False;Connect Timeout=5;Min Pool Size=0;Connection Lifetime=600;

  • Windows服务的登录身份采用某种集成验证

如本地系统账户、LOCAL SERVICE、NETWORK SERVICE

异常表现举例

eg1:如查询
SELECT name FROM  master..sysdatabases WHERE name ='PRO68347412019041014284779
时,查询结果无数据!!!此语句在sqlserver的查询分析器中查到有数据

eg2:如查询
select * from t_ad_DbType
时,服务直接报错“拒绝了对' t_ad_DbType'对象 (数据库 'master',架构 'dbo')的 SELECT 权限。”

解决方法:

方法1:改连接sqlserver的连接字符串。
将sqlserver的其中一个内置帐户作为访问sqlserver的“登录身份”帐户,并将此帐户添加为具有相应数据库权限的SQL Server实例上的登录名

方法2:改启动服务的登录方式。
指定以windows本地或域帐户登录Windows服务,安装程序会在安装服务期间提示用户输入帐户凭据;然后将此帐户添加为具有相应数据库权限的登录名。

方法点评:

方法1密码由sqlserver管理,方法2密码由windows管理,并且还符合任何所需的安全策略。
方法2将隐藏服务的交互界面,方法1可以显示交互界面

我的选择:

方法2


异常1:服务无法使用【本地系统帐户】登录方式

如此设置,服务在使用中有的会报

无法打开登录所请求的数据库 "XX"。登录失败。用户 'NT AUTHORITY\SYSTEM' 登录失败。

解决办法:

在sqlserver中授予NT AUTORITY\SYSTEM管理员权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThorpeTao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值