2016-11-20 94 views
0

在客户端计算机上部署我的C#应用​​程序的胜利后,会出现以下错误:错误:底层提供程序在打开时失败。 system.data.sqlclient.sqlexception用户登录失败

The underlying provider failed on open.system.data.sqlclient.sqlexception

login failed for user. cannot open database "EmdadKhordo" Requested by the login

这是我的连接字符串:

metadata=res://*/Models.EmdadKhodroDB.csdl|res://*/Models.EmdadKhodroDB.ssdl|res://*/Models.EmdadKhodroDB.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=EmdadKhodroDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" 

我用实体框架来访问SQL Server数据库。

+0

可能是因为您的连接字符串使用集成安全性。这意味着当前的Windows用户将被用于连接到数据库。如果你的数据库不支持Windows身份验证,那么你会得到这个错误。 – user1681317

回答

0

基础上不能访问数据库的错误信息,验证成功的SQL实例,但指定的数据库无法访问。这可能是因为EmdadKhodroDB数据库不存在,不在线或在当前安全上下文中(很可能)无法访问。确保您使用的帐户有权访问数据库和所需的对象权限。

下面的DCL将把用户添加到数据库中。您还需要直接向用户或用户所属的角色授予对象级权限。

USE EmdadKhodroDB; 
CREATE USER [YourDomain\YourAccount]; 
0

您还可以使用SQL Management Studio来管理您的Windows用户权限。只需按照here中的说明创建新登录,并为每个需要访问的数据库配置映射。

基本上你需要确保登录正确定义(安全性 - >登录)和它对EmdadKhordo数据库中的相应权限(读,写等)。建议允许所需的最小权限(例如,如果用户仅执行SELECT,INSERT,UPDATE,DELETE语句,则不允许更改表)。

相关问题