问题描述
用.net7 开发了一个控制台程序,然后改为Windows Service,运行后报错,提示:System.Data.OleDb.OleDbException (0x80004005): 无法打开登录所请求的数据库 "实例名"。登录失败。
原因分析
登录失败 应该是控制台程序 和 Windows Service 所处的系统账号不同,Windows Service 为 NT AUTHORITY\SYSTEM,而后者在Sql Server中的服务器角色默认是 public。
解决方法
打开Sql Server Management Studio(SSMS),在 安全性->登录名 中找到 NT AUTHORITY\SYSTEM,右键 属性->服务器角色,增加勾选 sysadmin 即可。