我使用。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 事务管理器通信 允许入站 允许出站

其他回答

您应该查看innerException,以了解抛出的内部原因 错误。

在我的例子中,最初的错误是:

无法打开物理文件“D:\Projects2\xCU\xCU\App_Data\xCUData_log.ldf”。操作系统错误5:“5(访问被拒绝。)”。 试图为文件D:\Projects2\xCU\xCU\App_Data\xCUData附加一个自动命名的数据库。mdf失败了。存在同名数据库、无法打开指定文件或位于UNC共享上。

这一问题通过赋予当前用户使用文件属性访问相关MDF和LDF文件的完全权限来解决。

我已经用这种方法解出来了。

步骤1: 打开Internet信息服务管理器

步骤2: 单击左侧导航树中的应用程序池。

步骤3: 选择您的版本池。在我的情况下,我使用的是ASP . net v4.0。如果你没有这个版本,选择DefaultAppPool。

步骤4: 右键单击步骤3,并选择高级设置。

步骤5: 在属性窗口中选择Identity并单击按钮更改值。

步骤6: 在“内置帐户”组合框中选择“本地系统”,单击“确定”。 就是这样。现在运行应用程序。一切都很顺利。

代码项目解决方案:底层提供者-failed-on-open

我也有同样的问题,但对我有用的是从连接字符串中删除这个:

persist security info=True

我通过重置IIS摆脱了这个问题,但仍然在连接字符串中使用集成身份验证。

我有这个错误突然发生在我们的一个网站上。在我的例子中,结果是SQL用户的密码过期了!在SQL Server Management Studio中取消密码过期框是有效的!