MSSQL错误'基础提供程序在Open上失败'

c# database-connection entity-framework sql-server

我使用.mdf连接到databaseentityClient 。现在我想更改连接字符串,以便没有.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上失败

一般承认的答案

我有这个错误,并找到了一些解决方案:

查看连接字符串,它看起来有效。我发现这篇博文 ,这里的问题是他们使用的是集成安全性 。如果您在IIS上运行,则IIS用户需要访问该数据库。

如果您正在使用Entity Framework with Transactions ,Entity Framework会自动打开和关闭每个数据库调用的连接。因此,在使用事务时,您尝试通过多个连接传播事务。这提升到MSDTC

有关详细信息,请参阅此参考。

将我的代码更改为以下修复它:

using (DatabaseEntities context = new DatabaseEntities())
{
    context.Connection.Open();
    // the rest
}

热门答案

context.Connection.Open()没有帮助解决我的问题所以我尝试在DTC配置中启用“允许远程客户端”,没有更多的错误。

在Windows 7中,您可以通过运行dcomcnfg,组件服务 - >计算机 - >我的电脑 - >分布式事务处理协调器 - >右键单击本地DTC - >安全性来打开DTC配置。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因