use*_*455 15 .net c# sql-server-2005
我创建了一个Windows服务,我的服务依赖于SQL服务器服务.首先,SQL启动,然后在启动PC或重新启动PC时启动我的服务.
这工作正常,但问题是Windows服务无法读取数据库文件,抛出异常"无法打开用户默认数据库.登录失败.登录失败,用户'NT AUTHORITY\SYSTEM'"当我试图读取数据库时.
如果我启动计算机并登录则无法读取数据库,但如果我已启动计算机并等待几秒钟然后登录窗口服务则会读取数据库.
mar*_*c_s 30
我打赌你的连接字符串中有这个:
Integrated Security=SSPI
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
现在,服务在(NT AUTHORITY\SYSTEM)下运行的帐户尝试连接到数据库 - 并且不能,因为它没有被授权这样做.
您可以:
NT AUTHORITY\SYSTEM在SQL Server中创建登录名,并为其提供应用程序所需的必要权限要么:
您在SQL Server中创建一个特定的应用程序用户帐户(登录到SQL Server和数据库中的用户)并将您的连接字符串更改为:
User ID=(your app account);pwd=YourPassword
Run Code Online (Sandbox Code Playgroud)转到数据库下的安全选项卡。
在 下security,单击以展开Users选项卡。
查找天气NT AUTHORITY\SYSTEM是否存在。
如果没有,右键单击用户,单击新用户
在新用户窗口中,general使用 Tab 键将 更改user type为windows 用户。
选择用户名 NT AUTHORITY\SYSTEM 您必须在Advanced tab, find now, and select system.
类似地,对于登录名,browse and find NT AUTHORITY\SYSTEM.
在左侧的“成员资格”选项卡中,选择所有必需的框,然后单击“确定”。
也许这会解决你的问题。希望这可以帮助。