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合法嗎? 是的,了解原因