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

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

这工作正常,但问题是Windows服务无法读取数据库文件,抛出exception“无法打开用户默认数据库。登录失败。登录失败,用户’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 

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

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

寻找天气NT AUTHORITY\SYSTEM在场。

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

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

选择要更新的用户名,NT AUTHORITY \ SYSTEM,您必须在Advanced tab, find now, and select system找到它Advanced tab, find now, and select system

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

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

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

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

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

坚持安全信息=真

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

 Trusted Connection=false 

要么

 Integrated Security=True