起因:
客户服务器运行环境要求提高安全性,建议数据连接串采取 加密措施 ,或改用 Window 验证 连接数据库服务 。于是我们打算选择后着,将后台服务(Window Server)数据库连接串调整为Window 验证。
过程如下:
事先,检查数据库验证方式为混合验证方式,并按照如下格式修改程序连接串, 但启动服务后,报错。
<add name="***_ConnectionString" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=****;Data Source=.MSSQL2008R2" />
启动程序报错日志 :
[2017-11-13 03:40:21/363294781]消息:System.Data.SqlClient.SqlException (0x80131904): 无法打开登录所请求的数据库 "****"。登录失败。
用户 'CNTJBCWG1CNTJW16BCSQL1$' 登录失败。
我们认为是权限问题,于是:
将window server 服务指定管理员帐号运行 (管理员帐号名:sql_server)
同时在 sql server服务器 新建登陆名,搜索 sql_server 帐号,并添加 ,同时指定帐号 服务器角色 sysadmin。
接着启动程序,仍报异常:
[2017-11-13 04:39:06/366820156]消息:System.ServiceModel.AddressAccessDeniedException: HTTP 无法注册 URL http://+:9529/。
进程不具有此命名空间的访问权限(有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=70353)。 ---> System.Net.HttpListenerException: 拒绝访问。
网上查了,执行如下命令:
netsh http add urlacl url=http://+:9529/ user="sql_server"
提示 添加url 成功。
接着重启服务, 又报了一个异常: 提示无法访问本服务运行目录中的一个子目录。
仍然是权限问题,将服务运行目录 设为充许 sql_server 完全读写控制。
再次启动服务,一切正常。