다른 서버를 폴링하고 SQL 서버가 실행 중인지 확인하는 방법을 찾고 있습니다. 내 코드를 C#으로 작성하고있다. 필자는 특히 개별 데이터베이스는 신경 쓰지 않으며 SQL 서버가 실행 중이고 응답 성이 뛰어납니다.SQL 서버가 실행 중인지 감지
아이디어가 있으십니까?
다른 서버를 폴링하고 SQL 서버가 실행 중인지 확인하는 방법을 찾고 있습니다. 내 코드를 C#으로 작성하고있다. 필자는 특히 개별 데이터베이스는 신경 쓰지 않으며 SQL 서버가 실행 중이고 응답 성이 뛰어납니다.SQL 서버가 실행 중인지 감지
아이디어가 있으십니까?
글쎄, 무력의 해결책은 각 서버에서 데이터베이스와의 연결을 시도하는 것입니다. 시간 초과 문제가있을 수 있지만 실행 여부를 알려줍니다.
더 우아하지만 (더 어렵습니다 ... 항상 그런 방식이 아닙니까?) 솔루션은 WMI를 사용하여 원격 컴퓨터에 연결하고 SQL 서버 프로세스가 실행 중인지 확인하는 것입니다.
TCPClient Class을 사용하면 TCP에서 주어진 IP 주소로 연결하는 일반 기능을 만들 수 있습니다.
그런 다음 테스트 할 서버 목록을 반복하고 WMI를 사용하여 특정 서버가 필요한 경우 포트 1433
에 대한 연결을 열어보십시오. 당신은 단지 모든 가능한 서버를 원하는 경우 :
이것은 내 마지막 해결책이었습니다. 감사! –
나는 확실히 빈센트의 답을 갈 것입니다. 그냥 당신이 폐쇄하고 TCP 연결을 적절하게 처분하고 있는지 확인하십시오. WMI는 그것이 전부라면 나에게 잔인한 것 같습니다.
System.Data.Sql.SqlDataSourceEnumerator
은 현재 실행중인 SQL Server의 모든 인스턴스를 반환합니다.
MSDN Link
나는 6 개의 SQLDMO 코드를 사용할 때와 같은 결과를 얻는다. –
SqlDataSourceEnumerator는 당신에게 모든 인스턴스를 제공하지만 그들은 반드시 실행되고 있지 않습니다. 로컬 SQL 인스턴스의 경우 ServiceController 객체 인 네임 스페이스 System.ServiceProcess를 사용할 수 있습니다. 서비스 이름은 SqlDataSourceEnumerator에서 "MSSQL $"및 "InstanceName"의 concatination입니다. ServiceController 객체의 ServiceName 속성을 설정하면 "Status"속성 - Stopped, Running, Pended 등을 확인할 수 있습니다. 따라서 "Running"을 필터링 할 수 있습니다.
ummm .. 프레임 워크 4에서는 foreach.parallel에 대해 생각해 볼 수 있고 결과가 비동기식이 될 때까지 기다릴 수 있습니다. 여전히 퍼프 대니가 보이니? 난 그냥 병렬 물건이 의미가 어디 있는지 보려고 ... – Perpetualcoder
정확한 연결 문자열 목록 – Perpetualcoder
?? 어쩌면 내가 뭔가를 놓쳤을지도 모르지만, 당신이하려고하는 요점을보고 있지 않습니다. – TheSmurf