2010-03-23 4 views
1

사용자가 입력 한 서버에 연결하려고합니다. 서버가 없으면 입력 한 내용을 수정할 수 있도록 최종 사용자에게 빠른 피드백을 전하고 싶습니다.C# : DBConnection.Open() 제한 시간이 너무 깁니다.

연결하기 전에 서버가 있는지 테스트 할 방법이 있습니까?

감사

답변

2

DBConnection에 ConnectionTimeout 속성이 있습니까? 이것을 작은 숫자로 설정하십시오.

+0

감사합니다. – leo

0

당신은 SQL 서버의 목록을 가져올 수 SQL Server Management Objects (SMO)를 사용할 수 있습니다. 서버 목록을 얻는 방법에 대한 샘플이 있습니다 here. 서버 열거에는 시간이 걸릴 수 있지만 사용자가 서버를 선택해야 할 때 응용 프로그램이로드 될 때 항상 백그라운드에서 시작할 수 있습니다.

+0

아무 것도 지정하지 않고도 사용 가능한 모든 서버를 나열하는 방법을 모르겠지만 확인해 보겠습니다. 그리고 Oracle과 MsSQL 모두에서 작동하는 솔루션이 필요합니다. – leo

+0

Oracle 서버를 찾는 것이 문제 일 수 있습니다. SMO 개체에는 모든 SQL 서버에 대한 네트워크를 검색하는 EnumAvailableSqlServers 함수가 있습니다. 완료하는 데 몇 초가 걸리지 만 사용자가 네트워크에서 볼 수있는 모든 SQL 서버를 볼 수있는 양식을 작성하는 데 적합합니다. – TLiebe

0

항상 서버에 ping을 보내거나 지정된 포트가 열려 있는지]] 그러나 실제 서버에 연결하기 전에이 서버가 오프라인 상태가되지는 않을 수도 있습니다.

1

DbConnection의 ConnectionTimeout 속성에는 setter가 없습니다. 15 초 동안 기다립니다. 연결 문자열에 시간 초과를 지정해야합니다. 연결 문자열의 "Connection Timeout"은 초 단위입니다.

string connStr = "Data Source=(local);Initial Catalog=AdventureWorks;" + 
       "Integrated Security=SSPI;Connection Timeout=5"; 
관련 문제