2010-07-06 7 views
2

실제로 SqlDataSourceEnumerator가 수행하는 작업은 LAN의 다양한 PC에서 실행되는 SQL Server의 모든 인스턴스를 찾는 것입니다.LAN의 모든 호스트에서 실행중인 프로그램의 모든 인스턴스를 찾는 방법은 무엇입니까?

임의 응용 프로그램의 실행중인 인스턴스를 찾는 것과 동일한 기능이 있습니까?

편집 : 좋아요,이 앱은 미리 정의 된 협력 방법이 있기 때문에 작동합니다. 해당 파일 자체 (exe, say)가 응용 프로그램 자체가 그 당시에 실행되지 않더라도 LAN의 일부 컴퓨터에 존재하는지 확인하는 간단한 방법이 있습니까? 권한은 반드시 고려해야한다는 것을 이해하십시오.

답변

0

어떤 SQL 열거 형은 전체 LAN 세그먼트 (서브넷 마스크)에 UDP 패킷 (포트 1434)을 브로드 캐스트합니다. 다양한 호스트에서 실행되는 SQL Browser Agent 서비스는이 패킷을 수신하고 로컬 인스턴스 목록으로 응답합니다. 열거가 발생하는 그래서, 오리의 수는 이미 당신을 위해 정렬 :

  • SQL의 isntance 발견을위한 잘 알고 프로토콜은 UDP 1434 방송 및 응답이
  • 이 서비스가이을 수신하는 방송은 SQL Server 설치 프로그램으로 설치
  • 동일하게 동작하는 임의의 응용 프로그램이 당신에게 활용

방송 요청 서식 및 응답 구문 분석을 구현하기위한 클라이언트 라이브러리가

  • , 상기 응용 프로그램은 다음을 구현해야합니다 미스... . 서브넷 세그먼트 내의 임의의 호스트에서 실행되는 임의의 프로세스를 발견하는 것은 모든 실질적인 수단에서 기본적으로 불가능합니다.

  • 0

    차이점은 SqlDataSourceEnumerator는 LAN에서 "볼 수있는"모든 인스턴스를 찾습니다. 서버 프로세스가 해당 요청에 응답하지 않도록 구성된 경우에는 보이지 않습니다.

    같은 줄을 따라 원격으로 알려진 존재 방법을 가진 응용 프로그램을 검색 할 수 있습니다. 가장 간단한 방법은 응용 프로그램이 연결을 수신하고 연결에 응답하는 것입니다. 응용 프로그램은 예를 들어 TCP 포트에 바인딩하여 요청을 수신하고 그것이 살아 있고 실행 중임을 나타내는 응답을 되돌릴 수 있으며 네트워크의 호스트에서 해당 응답을 검색 할 수 있습니다.

    그러나 "임의의 응용 프로그램"의 경우 대부분의 응용 프로그램에는 네트워크 검색 메커니즘이 없습니다. 임의의 응용 프로그램을 제어하는 ​​경우 임의의 응용 프로그램을 제어 할 수 있습니다. 하지만 그렇지 않다면 특정 호스트에서 해당 응용 프로그램을 찾는 방법이 필요합니다. 즉, 네트워크 상호 작용이 필요합니다.

    0

    아니요, 없습니다.

    SQL 서버에서 작동하는 이유는 SQL 서버에 네트워크에서 "검색"요청을 수신하는 수신기가 있기 때문입니다. 그런 다음 응용 프로그램은 네트워크에서 브로드 캐스트 메시지를 보내고 해당 요청에 대한 응답을 수신하여 SQL Server 인스턴스를 검색 할 수 있습니다.

    나는 이것을 일반적으로 수행 할 수있는 프로그램을 작성할 수 있다고 가정합니다. 발견 요청을 수신하고, 일부 Windows API 함수를 사용하여 해당 컴퓨터에서 실행중인 프로세스를 열거하고, 요청 된 프로그램이 실행중인 경우 응답 할 수 있습니다.

    관련 문제