登录失败。用户'NT AUTHORITY \ SYSTEM'登录失败

问题描述 投票:14回答:6

我创建了一个Windows服务,我的服务依赖于SQL服务器服务。首先,SQL启动,然后在启动PC或重新启动PC时启动我的服务。

这工作正常,但问题是Windows服务无法读取数据库文件,抛出异常“无法打开用户默认数据库。登录失败。登录失败,用户'NT AUTHORITY \ SYSTEM'”当我试图读取数据库时。

如果我启动计算机并登录则无法读取数据库,但如果我已启动计算机并等待几秒钟然后登录窗口服务则会读取数据库。

c# .net sql-server-2005
6个回答
28
投票

我打赌你的连接字符串中有这个:

Integrated Security=SSPI

或类似的东西。

现在,服务在(NT AUTHORITY\SYSTEM)下运行的帐户尝试连接到数据库 - 并且不能,因为它没有被授权这样做。

您可以:

  • 或者在SQL Server中为NT AUTHORITY\SYSTEM创建一个登录名,并为其提供所需的应用程序权限

要么:

  • 您在SQL Server中创建一个特定的应用程序用户帐户(登录到SQL Server和数据库中的用户)并将您的连接字符串更改为: User ID=(your app account);pwd=YourPassword

2
投票

转到数据库下的安全选项卡。

security下,单击以展开Users选项卡。

查找天气NT AUTHORITY\SYSTEM目前。

如果没有,请右键单击用户,单击新用户

在新用户窗口中,general选项卡将user type更改为windows用户。

选择用户名,NT AUTHORITY \ SYSTEM,你必须在Advanced tab, find now, and select system中找到它。

同样对于登录名,browse and find NT AUTHORITY\SYSTEM

在左侧的成员资格选项卡中,选择所有必需的框,然后单击确定。

可能这会解决你的问题。希望这可以帮助。


1
投票

我实际上只是在SQL Server中更改了NT AUTHORITY \ SYSTEM用户的权限,这对我有用。


0
投票

你可以在连接字符串上添加它

坚持安全信息=真


0
投票

我从连接字符串中删除了Trusted_Connection=yes,它运行得很好。


-1
投票

简单的解决方案是检查您的web.config文件,并确保其中一个是数据库连接字符串的一部分:

Trusted Connection=false

要么

Integrated Security=True
© www.soinside.com 2019 - 2024. All rights reserved.