2009-03-05 2 views
2

시스템 시작시 로컬 SQL Server 2005 설치와 통신해야하는 응용 프로그램이 있습니다. ServiceController 클래스를 사용하여 "실행 중"상태가 될 때까지 기다렸다가 대부분의 시간이 정상적으로 작동합니다. 그러나 콜드 부팅시 가끔 내 첫 쿼리가 실패하여 현재 사용자를 로그 할 수 없다고 말합니다.SQL Server가 시작되어 사용할 준비가되었음을 어떻게 알 수 있습니까?

경쟁 조건처럼 들리지만 내 WaitForStatus 호출이 문제를 해결해야한다고 생각했습니다.

실제로 실행 중인지 확인하는 더 좋은 방법이 있습니까? 나는 단지 여분의 숙면을해야하고 충분히 오래 걸릴 것인가?

답변

3

당신은 항상 the System.Data.Sql.SqlDataSourceEnumerator를 사용하여 로컬 인스턴스를 확인할 수 있습니다.

플러스에서는 열거자를 사용하여 버전 정보를 검색 할 수도 있습니다.

+0

나는 이것을 먼저 시도 할 것이다. 감사! – Coderer

6

그냥 예외를 catch하고 작동 할 때까지 재 시도 할 수 ...

+1

"정말 - 정말 실행 중"이라고 말하는 가장 좋은 방법은 쿼리를 실행하여 최상의 옵션이되도록하는 것입니다. –

+0

이 솔루션은 테스트를 위해 잘 작동하는 것 같습니다. 이벤트 뷰어에 "SQL Server가 새로운 클라이언트 연결을 수락 할 준비가되지 않았습니다."라는 메시지가 나타납니다. 오류 항목이 있지만 일단 서버가 온라인 상태이면 프로그램이 제대로 작동합니다. – ADH