一尘不染

MSSQL错误“底层提供程序在打开时失败”

c#

我正在使用.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" />

因为我总是收到错误:

基础提供程序在打开时失败


阅读 221

收藏
2020-05-19

共1个答案

一尘不染

我遇到此错误,找到了一些解决方案:

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

如果您将Entity Framework
与Transactions一起使用,则Entity
Framework会自动打开和关闭每个数据库调用的连接。因此,在使用事务时,您尝试将事务分布到多个连接上。这将提升为MSDTC

有关更多信息,请参见此参考。

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

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