我使用。mdf来连接数据库和entityClient。现在我想改变连接字符串,这样就不会有.mdf文件了。

下面的connectionString是否正确?

<connectionStrings>
   <!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />-->
   <add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

因为我总是得到错误:

基础提供程序在Open上失败


当前回答

我有一个类似的错误与内部异常如下:

操作对于事务的状态无效

我可以通过启用DTC安全设置来解决这个问题。

转到DTC的属性,在安全选项卡下,检查以下内容

网络DTC接入 允许RemoteClients 事务管理器通信 允许入站 允许出站

其他回答

为服务器机器上的SQL Server(和端口1433)定义一个新的Windows防火墙规则可以解决这个错误(如果您的服务器名、用户登录名或密码在连接字符串中没有错误…)。

SQL Server Express服务未设置为自动启动。

1)进入控制面板 2)管理工具 3)服务 4)将SQL Server express设置为自动启动 5)右键单击,启动服务

我希望这能有所帮助。

如果还原数据库时用户已经存在,且模式不同,导致无法分配正确的权限,也会发生这种情况。

要纠正此运行:

USE your_database
EXEC sp_change_users_login 'Auto_Fix', 'user', NULL, 'cf'
GO
EXEC sp_change_users_login 'update_one', 'user', 'user'
GO

确保所提供的连接字符串中的每个元素值都是正确的。在我的例子中,我得到了相同的错误,因为在连接字符串中指定的目录名称(数据库名称)不正确。

我在这里发布了一个类似的问题,使用托管在亚马逊RDS上的SQL 2012数据库。问题是在连接字符串-我有“应用程序名称”和“应用程序”属性在那里。一旦我把它们拿掉,它就起作用了。

实体框架5和Amazon RDS——“底层提供者在Open上失败了。”