小编典典

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

all

我正在使用 a.mdf连接到 adatabaseentityClient。现在我想更改连接字符串,以便没有.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" />

因为我总是得到错误:

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


阅读 59

收藏
2022-06-01

共1个答案

小编典典

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

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

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

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

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

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