2013-06-05 2 views
0

winforms 응용 프로그램에서 엔터티 프레임 워크를 사용하고 있습니다.엔터티 프레임 워크 연결 문자열을 사용하여 DB 서버에 연결 가능

내가 scsb.DataSource = "localhost"를 모든 일이 잘 작동하지만 난 연결하려고 할 때 내가 예외 가지고 DB 서버를 onother 설정 :

"**The underlying provider failed on Open**." 

어떤 도움하세요?

 public DistributionSSEntities1 Connection() 
     { 
     var scsb = new SqlConnectionStringBuilder(); 
     scsb.DataSource = "192.168.1.100"; 
     scsb.InitialCatalog = "DistributionSS"; 
     scsb.IntegratedSecurity = true; 
     //------------------------ 
     EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder(); 
     builder.Metadata ="res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl"; 
     builder.Provider = "System.Data.SqlClient"; 
     builder.ProviderConnectionString = scsb.ConnectionString; 
     DistributionSSEntities1 db = new DistributionSSEntities1(builder.ToString()); 
     return db; 
    } 
+0

확인이 [링크] (http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/091b1eac-4ed6-43b8-b184-a713d1f2b9eb) –

+0

해당 서버를 수행 공장? 먼저 vs 스튜디오를 사용하여 액세스하십시오. 웹 구성 연결 문자열도 확인하십시오. – BizApps

+0

액세스하려고하는 서버에 대한 Windows 인증 계정이 있는지 확인하십시오. – rajansoft1

답변

0
public DistributionSSEntities Connection() 
    { 
     string ConString = "SERVER=192.168.1.100;DATABASE=DistributionSS;UID=sa;PASSWORD=125;"; 
     SqlConnectionStringBuilder SCB= new SqlConnectionStringBuilder(ConString); 
     //------------------------ 
     EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder(); 
     builder.Metadata = "res://*/Model.Model.csdl|res://*/Model.Model.ssdl|res://*/Model.Model.msl"; 
     builder.Provider = "System.Data.SqlClient"; 
     builder.ProviderConnectionString = SCB.ConnectionString; 
     DistributionSSEntities db = new DistributionSSEntities(builder.ToString()); 
     return db; 
    } 
2

원격 SQL을 원격 연결을 허용하도록 설정 했습니까? 원격 Sql에 Windows 방화벽을 통한 액세스가 허용 되었는가 ... 연결되지 않는 이유는 너무 많습니다.

당신은 통합 보안을 사용하고 있습니다 - 이것은 로컬 SQL에 유용 할 수 있습니다; 그러나 WinForm 응용 프로그램이 실행되는 네트워크 사용자는 원격 상자에 액세스 할 수있는 올바른 권한이 있어야합니다.

나는 다음과 같은 가능성을 어떻게 제거 시작하는 게 좋을 것 :

  1. 점검 대상 서버에서 SQL 로그를. 그것은 항상 attemp가 실패한 정확한 이유를 가지고 있습니다 - 당신이 예외를 통해 얻은 물결 무늬가 아닌 버전. (. 예를 들어 C : \ 프로그램 Files \ Microsoft SQL 서버 \ MSSQL11.SQLEXPRESS \ MSSQL \ 로그)는 SQL 사용자 이름 암호를 사용하여에

  2. 연결 - 그것은 그

  3. 방화벽이 아니다 확인하기 위해 통합되지 보안을

편집

그것은 의도적으로 모호하거나없는에있는 오류 메시지가 로그인 시도 실패에 대한 클라이언트에 반환 것을 기억하는 것이 중요합니다 형성 - 공격자가 공격을 향상시키기에 충분한 정보를 얻는 것을 제한합니다 (증명을 위해 the technet article 참조). 따라서 로그인/연결 시도가 서버에 실제로 이루어지면 SQL Server 로그를 확인하는 것이 필요합니다. 기사

:

는 보안을 강화하려면, 클라이언트 에 반환되는 오류 메시지가 의도적으로 인증 오류의 특성을 숨 깁니다. 그러나 SQL Server 오류 로그에서 해당 오류에 인증 실패 조건에 매핑되는 상태 오류가 있습니다. 오류 상태를 다음 목록과 비교하여 로그인 실패의 원인을 확인하십시오.

관련 문제