本地Windows服务连接SQL Server时出现NT AUTHORITY\ANONYMOUS LOGON登录异常
Windows服务连接SQL数据库登录异常解决办法
问题情况
本地部署的Windows服务连接SQL Server时出现登录异常,提示使用NT AUTHORITY\ANONYMOUS LOGON身份登录失败。服务采用本地系统账户运行,使用的数据库连接字符串为:
Persist Security Info=False;Initial Catalog=Test;Data Source=SQL2016;Integrated Security=SSPI;
问题原因
本地系统账户默认不具备SQL Server的访问权限,即便连接本地实例,跨进程认证时也会以匿名身份发起请求,最终因权限不足导致登录失败。
解决步骤
1. 修改服务运行账户
- 打开服务管理器,找到目标服务右键选择「属性」
- 切换到「登录」选项卡,选择「此账户」,输入一个已拥有SQL Server登录权限的本地账户或域账户(需提前确保该账户在SQL Server中配置对应权限)
- 输入账户密码后点击「应用」,重启服务
2. 配置SQL Server登录权限
- 打开SQL Server Management Studio,连接到目标实例
SQL2016 - 展开「安全性」→「登录名」,右键选择「新建登录名」
- 在「常规」选项卡中选择「Windows身份验证」,填入刚才指定的服务运行账户
- 切换到「用户映射」选项卡,勾选目标数据库
Test,并分配必要权限(如db_datareader、db_datawriter等) - 保存配置
3. 验证连接字符串
- 确认
Data Source指向正确的SQL Server实例,本地实例可尝试使用localhost\SQL2016或127.0.0.1\SQL2016 - 确保
Integrated Security=SSPI配置正确,该参数会使用服务运行账户的身份进行Windows身份验证
特殊场景处理
若必须使用本地系统账户运行服务,可直接将NT AUTHORITY\SYSTEM账户添加到SQL Server的登录名中,并为其分配Test数据库的访问权限。同时检查SQL Server的身份验证模式是否为「Windows身份验证模式」(混合模式也可兼容,但优先推荐Windows身份验证)
内容的提问来源于stack exchange,提问作者ND's
相关产品推荐
相关产品推荐

