我创建了一个 Windows 服务,我的服务依赖于 SQL Server 服务。首先,SQL 启动,然后在启动 PC 或重新启动 PC 时启动我的服务。
这工作正常,但问题是 Windows 服务无法读取数据库文件,抛出异常“无法打开用户默认数据库。登录失败。用户‘NT AUTHORITY\SYSTEM’登录失败”,当我尝试读取数据库。
如果我启动计算机并登录,则它无法读取数据库,但如果我启动计算机并等待几秒钟,然后登录到窗口服务,它会读取数据库。
最佳答案
我打赌你的连接字符串中有这个:
Integrated Security=SSPI
或类似的东西。
现在运行该服务的帐户 (NT AUTHORITY\SYSTEM
) 尝试连接到数据库 - 但无法连接,因为它没有被授权这样做。
您可以:
- 在您的 SQL Server 中为
NT AUTHORITY\SYSTEM
创建一个登录名,并为其授予您的应用所需的必要权限
或者:
您在 SQL Server 中创建一个特定的应用程序用户帐户(登录到 SQL Server 和数据库中的用户)并将您的连接字符串更改为:
User ID=(your app account);pwd=YourPassword
关于c# - 登录失败。用户 'NT AUTHORITY\SYSTEM' 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894651/