programing

MSSQL 오류 '기본 공급자가 열 때 실패했습니다.'

minimums 2023. 4. 8. 08:17
반응형

MSSQL 오류 '기본 공급자가 열 때 실패했습니다.'

는 ★★★★★★★★★★★★★★★★를 사용하고 있었다..mdf 하기 위해서database ★★★★★★★★★★★★★★★★★」entityClient 접속 하여 더 하지 않도록 .mdffilename을 클릭합니다.

가 '오빠'인가요?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" />

항상 다음 오류가 발생하기 때문입니다.

기본 제공자가 열 때 실패했습니다.

다음 오류가 발생하여 몇 가지 해결 방법을 찾았습니다.

연결 문자열을 보니 유효한 것 같습니다.블로그 투고를 찾았습니다만, 문제는 통합 보안을 사용하고 있다는 것입니다.IIS에서 실행 중인 경우 IIS 사용자는 데이터베이스에 액세스해야 합니다.

트랜잭션과 함께 엔티티 프레임워크사용하는 경우 엔티티 프레임워크는 각 데이터베이스 호출에 대한 연결을 자동으로 열고 닫습니다.따라서 트랜잭션을 사용할 때 트랜잭션을 여러 연결로 분산하려고 시도합니다.MSDTC로 올라갑니다.

(자세한 것에 대하여는, 이 레퍼런스를 참조해 주세요).

코드를 다음과 같이 변경하여 수정했습니다.

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

context.Connection.Open()문제 해결에 도움이 되지 않아 DTC 구성에서 "원격 클라이언트 허용"을 활성화하려고 했습니다. 더 이상 오류가 발생하지 않습니다.

Windows 7에서는 dcomcnfg, 컴포넌트 서비스 -> 컴퓨터 -> 내 컴퓨터 -> 분산 트랜잭션 코디네이터 -> 로컬 DTC 우클릭 -> 보안을 실행하여 DTC 설정을 열 수 있습니다.

오류 발생의 내부 원인을 확인하려면 innerException을 참조하십시오.

제 경우, 원래 오류는 다음과 같습니다.

실제 파일 "D:"를 열 수 없습니다.\Projects2\xCU\xCU\App_Data\xCUData_log.ldf"를 선택합니다.운영체제 오류 5: "5(접속이 거부되었습니다)"파일 D에 대해 자동 이름 데이터베이스를 첨부하려고 했습니다.\Projects2\xCU\xCU\App_Data\xCUData.mdf가 실패했습니다.동일한 이름의 데이터베이스가 있거나 지정된 파일을 열 수 없거나 UNC 공유에 있습니다.

는 현재 접근 되었습니다.mdf ★★★★★★★★★★★★★★★★★」ldf파일 속성을 사용합니다.

문제는 다음 중 하나의 접속 문자열 내에 서버 경로가 있다는 것입니다.

SERVER\SQLEXPRESS
SERVER

내가 정말 해야 할 때:

.\SQLEXPRESS

SQL 인스턴스를 찾는 데 어려움이 있을 때마다 오류가 발생하였습니다.

이것은 일반적인 문제일 뿐입니다.나조차도 이 문제에 직면했다.Windows 인증으로 구성된 개발 머신에서는 다음과 같이 완벽하게 동작합니다.

<add name="ShoppingCartAdminEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQlExpress;initial catalog=ShoppingCartAdmin;Integrated Security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

IIS에서 동일한 구성으로 호스트되면 다음 오류가 발생합니다.

기본 제공자가 열 때 실패했습니다.

을 바꾸면서 해결되었다.connectionString★★★★★★★★★

<add name="MyEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MACHINE_Name\SQlExpress;initial catalog=ShoppingCartAdmin;persist security info=True;user id=sa;password=notmyrealpassword;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

기타 일반적인 실수는 다음과 같습니다.

  1. 데이터베이스 서비스를 중지할 수 있습니다.
  2. Windows 인증을 사용하여 IIS에서 호스트되는 로컬 데이터베이스를 가리키는 데이터 원본 속성
  3. 사용자 이름과 비밀번호가 잘못되었을 수 있습니다.

이 예외를 수신하면 로그인에 실패한 이유에 대한 자세한 내용이 표시되므로 상세 내역을 확장하고 내부 예외 세부 정보를 확인하십시오.이 경우 접속 문자열에 데이터베이스에 액세스할 수 없는 사용자가 포함되어 있습니다.

통합 보안(로그인한 Windows 사용자의 컨텍스트) 또는 개별 SQL 계정 중 어느 쪽을 사용하든 이 문제를 방지하려면 액세스하려는 데이터베이스에 대해 '보안'에서 사용자에게 적절한 액세스 권한이 있는지 확인하십시오.

SQL Server Express 서비스가 자동으로 시작되도록 설정되지 않았습니다.

1) 제어판으로 이동 2) 관리도구 3) 서비스4) SQL Server Express를 클릭하여 자동으로 시작하도록 설정 5) 우클릭 후 서비스를 시작합니다.

그게 도움이 됐으면 좋겠어요.

Windows Server 2003의 SQL Server Express Edition에서도 같은 문제가 있었습니다.데이터베이스 보안에서 네트워크 서비스를 사용자로 추가했을 뿐입니다.

데이터베이스를 복원하고 사용자가 이미 다른 스키마를 사용하여 존재하여 올바른 사용 권한을 할당할 수 없는 경우에도 이 문제가 발생할 수 있습니다.

이 실행을 수정하려면:

USE your_database
EXEC sp_change_users_login 'Auto_Fix', 'user', NULL, 'cf'
GO
EXEC sp_change_users_login 'update_one', 'user', 'user'
GO

Amazon RDS에서 호스팅되는 SQL 2012 DB에서 작업하는 것과 유사한 문제를 여기에 게시했습니다.접속 문자열에 문제가 있었습니다.「어플리케이션명」「앱」속성이 포함되어 있었습니다.그것들을 제거하자 효과가 있었다.

엔티티 프레임워크 5 및 Amazon RDS - "기본 제공자가 열 때 실패했습니다."

제공되는 연결 문자열의 각 요소 값이 올바른지 확인하십시오.제 경우 접속 문자열에 지정된 카탈로그 이름(데이터베이스 이름)이 잘못되어 동일한 오류가 발생하였습니다.

접속 상태에 의한 예외에 대해서도 같은 문제가 있었습니다만, 도메인 서비스 클래스 변수가 스태틱(실수로)으로 마크 되어 있는 것을 알았습니다.

서비스 라이브러리가 메모리에 로드되면 새로운 콜마다 동일한 스태틱 변수 값(도메인 서비스 인스턴스)이 사용되기 때문에 접속 상태를 통해 경합이 발생합니다.

또, 각 클라이언트의 콜에 의해서 새로운 스레드가 생성되기 때문에, 복수의 스레드가 같은 도메인 서비스인스턴스에 액세스 하는 것은 열차의 파손에 해당한다고 생각합니다.

같은 문제가 발생했지만 Connection String에서 다음 항목을 삭제했습니다.

persist security info=True

다음과 같은 내부 예외에도 유사한 오류가 발생했습니다.

작업이 트랜잭션 상태에 대해 유효하지 않습니다.

DTC 보안 설정을 활성화하여 해결할 수 있습니다.

DTC 속성으로 이동하여 보안 탭에서 다음을 점검하십시오.

  • 네트워크 DTC 액세스
  • 리모트 클라이언트 허용
  • 트랜잭션 매니저 커뮤니케이션
  • 인바운드 허용
  • 아웃바운드 허용

ASP에서 이 에러가 발생했을 경우.NET Web 애플리케이션, 그 외의 것에 가세하고, 다음의 사항을 확인해 주세요.

  1. 데이터베이스 사용자 보안 권한(사용자의 데이터베이스에 대한 액세스가 허용된 사용자).
  2. IIS에서 응용 프로그램 풀을 확인하고 데이터베이스에 대한 액세스가 허용된 응용 프로그램 풀이 올바른지 확인합니다.

IIS를 리셋하여 이 문제를 해결했지만Integrated Authentication이치노

서버 머신의 SQL Server(및 포트 1433)에 대해 새로운 Windows 방화벽 규칙을 정의하면 이 오류가 해결됩니다(서버 이름, 사용자 로그인 이름 또는 비밀번호가 연결 문자열에 올바르지 않은 경우...).

나는 어떤 대답도 통하지 않았다

우리 중 몇몇은 바보 같은 실수를 하고, 실패하는 방법은 100가지가 있다고 생각합니다.

문제는 새로운 프로젝트였습니다.다른 프로젝트의 모든 설정을 설정했습니다만, 발신자는 Web API 프로젝트였습니다.Web API 프로젝트에서는 같은 접속 스트링을 복사해야 했습니다.

dbcontext나 web api에서 아무것도 새로 만들지 않은 것을 고려하면 이건 미친 짓이라고 생각합니다.

그렇지 않으면 클래스 라이브러리가 다음 이름의 데이터베이스를 검색하려고 했습니다.

TokenApi.Core.CalContext   

내 프로젝트의 이름은TokenApi.CoreCalContext 및 파일 '접속 문자열'입니다.

나는 이 문제를 찾기 위해 온 인터넷을 뒤졌다.연결 문자열에 이름이 잘못 입력되어 있으므로 web.config에서 연결 문자열을 확인하십시오.는 ★★★★★★★★★★★★★★★★★★★★★★★★★.name="AppTest" 그것은 그그 have have but but have but but 했다.name="App".

AppTestContext.cs 파일에는 다음과 같은 내용이 있습니다.

public AppTestContext() : this("App") { }

잘못된 연결 문자열:

<add connectionString="Data Source=127.0.0.1;Initial Catalog=AppTest;Integrated Security=SSPI;MultipleActiveResultSets=True" name="AppTest" providerName="System.Data.SqlClient" />

오른쪽 연결 문자열:

<add connectionString="Data Source=127.0.0.1;Initial Catalog=AppTest;Integrated Security=SSPI;MultipleActiveResultSets=True" name="App" providerName="System.Data.SqlClient" />

한 PC에서 다른 PC로 어플리케이션을 옮겼는데 위의 어느 것도 작동하지 않아 흔히 저지르는 실수는 두 앱에 연결 문자열을 복사하는 것을 잊어버린 것입니다.구성 및 웹.설정!

저도 비슷한 문제가 있었습니다.테스트 케이스 실행에서는 항상 이 오류가 발생합니다.알고 보니 "분산 트랜잭션 서비스"가 시작되지 않았습니다(실행: services.msc -> "분산 트랜잭션 서비스" 시작(자동 시작 설정)).그러고 나니까 신기하게...

나도 같은 문제에 직면해 있었다.이것으로 접속 문자열에서 사용자 이름과 비밀번호를 삭제했습니다.

나에겐 단순한 실수였다.

Amazon EC2를 사용하여 접속 문자열에서 탄력적인 IP 주소를 사용했는데 IP 주소를 변경할 때 접속 문자열 업데이트를 잊어버렸습니다.

저희 사이트 중 하나에서 갑자기 이 오류가 발생했습니다.저 같은 경우에는 SQL 사용자의 비밀번호가 만료되었습니다!SQL Server Management Studio의 암호 만료 상자를 해제하면 문제가 해결되었습니다.

며칠 전에도 "통합 보안="을 사용하여 동일한 문제가 발생했습니다.True;" 접속 문자열에서 "localsystem"에서 응용 프로그램 풀 ID를 실행해야 합니다.이 방법은 권장되지 않지만 테스트에서는 동작합니다.

IIS 7 에서는, 다음의 방법으로 ID 를 변경할 수 있습니다.http://www.iis.net/learn/manage/configuring-security/application-pool-identities

IIS에서 App Pool Identity As Service Account 사용자 또는 관리자 계정 또는 해당 DataBase에서 작업을 수행할 수 있는 권한을 가진 개미 계정을 설정합니다.

내 경우 컨텍스트의 컨스트럭터에 등록한 연결 문자열 이름과 web.config의 이름이 일치하지 않습니다.복사 및 붙여넣기로 인한 단순한 오류:d

    public DataContext()
        : base(nameOrConnectionString: "ConnStringName")
    {
        Database.SetInitializer<DataContext>(null);
    }

이 앱을 실행하고 있는 어플리케이션 풀 로그인이 변경되어 문제가 발생하였습니다.

IIS의 경우:

  • 사이트를 클릭하고 Basic Settings(기본 설정)로 이동하여 응용 프로그램 풀을 찾습니다.

  • 응용 프로그램 풀로 이동합니다.

  • 사이트의 응용 프로그램 풀을 클릭합니다.

  • [상세설정]을 클릭합니다.

  • ID에 계정 로그인 및 암호를 입력합니다.

  • 사이트를 다시 시작하고 다시 시도하십시오.

나는 이 방법으로 해결했다.

순서 1: Internet Information Service Manager를 엽니다.

2단계: 왼쪽 네비게이션 트리에서 Application Pools를 클릭합니다.

순서 3: 버전 풀을 선택합니다.제 경우는 ASP를 사용하고 있습니다.넷 v4.0이 버전이 없는 경우 Default AppPool을 선택합니다.

순서 4: 순서 3을 오른쪽 클릭하고, 상세 설정을 선택합니다.

5단계: 속성 창에서 ID를 선택하고 버튼을 클릭하여 값을 변경합니다.

순서 6: 빌트인 어카운트 콤보 박스에서 로컬 시스템을 선택하고 확인을 클릭합니다.바로 그겁니다.이제 응용 프로그램을 실행합니다.모든 것이 잘 작동한다.

Codeproject 솔루션 : 기본 제공자 실패 시 오픈

sync 메인콘솔에서 비동기 EF 메서드를 호출하면 이 오류가 발생합니다(await건너뛰었습니다).

비동기 접속 오픈은 이미 폐기된 데이터 컨텍스트에 대한 것이었기 때문입니다.

해결: 비동기 EF 메서드를 올바르게 호출합니다.

언급URL : https://stackoverflow.com/questions/2475008/mssql-error-the-underlying-provider-failed-on-open

반응형