[英]Cannot open database requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'
[英]SqlException: Cannot open database “path\db.mdf” requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'
我知道这个问题已经被问过很多次了,但是我仔细查看了答案,却没有找到解决问题的方法。
我用C#构建了Windows Service
,该Windows Service
连接到数据库并用其他来源的数据填充它。 我为ServiceProcessInstaller
StartType -> Automatic
Account -> LocalSystem
,为ServiceInstaller
StartType -> Automatic
。
我使用实体框架从数据库生成.edmx,这是一个连接字符串:
<add name="ConStringName"
connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;
attachdbfilename="somePath\MyDbName.mdf";
integrated security=True;connect timeout=30;
MultipleActiveResultSets=True;
App=EntityFramework'"
providerName="System.Data.EntityClient" />
我有这段代码:
var objContext = ((IObjectContextAdapter)dbContext).ObjectContext;
objContext.ExecuteStoreCommand("DELETE FROM Properties;");
在第二行,我得到
Cannot open database "path\DbName.MDF" requested by the login. The login failed.
Login failed for user 'NT AUTHORITY\SYSTEM'.
到目前为止,我已经尝试过:
1)对每个数据库表尝试以下代码:
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.TableName TO "NT AUTHORITY\SYSTEM";
而且没有dbo。
GRANT SELECT, INSERT, UPDATE, DELETE ON TableName TO "NT AUTHORITY\SYSTEM";
2)我已经在数据库中为此用户“ NT AUTHORITY \\ SYSTEM”设置了权限:
在SSMS中:数据库=> myDatabase->安全->用户->'NT AUTHORITY \\ SYSTEM'->属性->成员资格-> db_owner
3)试图在SQL Server中为此帐户设置权限:数据库->安全->登录->'NT AUTHORITY \\ SYSTEM'->属性->在此处设置db_owner
奇怪的是:有一次我重新启动计算机,一切正常! 像这样,LocalSystem拥有权限,Windows Service可以访问数据库并执行所有操作!
但是比起某些情况之后,此异常开始再次出现。 我试图重新启动计算机,但是失败了。
我知道我缺少明显的东西。 请帮我找到这个东西。
与其尝试为本地系统帐户设置对数据库的权限,不如执行以下操作之一:
将运行Windows服务的帐户更改为数据库中已具有权限的Windows帐户。
不要在您的连接字符串中使用integrated security=True
,而是指定一个User Id
和Password
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.