MSSQL 오류 '기본 제공 업체가 Open'에서 실패했습니다.

c# database-connection entity-framework sql-server

문제

나는 databaseentityClient 에 연결하기 위해 .mdf 를 사용했다. 이제 .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 사용하는 경우 Entity Framework 는 각 데이터베이스 호출과의 연결을 자동으로 열고 닫습니다. 따라서 트랜잭션을 사용할 때 여러 연결을 통해 트랜잭션을 분산하려고합니다. 이것은 MSDTC로 상승합니다.

자세한 내용은이 참조 문서를 참조하십시오.

내 코드를 다음과 같이 변경하면 해결됩니다.

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

인기 답변

context.Connection.Open() 내 문제를 해결하는 데 도움이되지 않았으므로 DTC 구성에서 "Allow Remote Clients"를 사용하도록 설정했지만 더 이상 오류가 발생하지 않았습니다.

Windows 7에서 dcomcnfg, 구성 요소 서비스 -> 컴퓨터 -> 내 컴퓨터 -> 분산 트랜잭션 코디네이터 -> 로컬 DTC -> 보안을 마우스 오른쪽 단추로 클릭하여 DTC 구성을 열 수 있습니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.