2014-04-16 1 views
0

사용 가능한 모든 SQL Server의 인스턴스 이름을 지정하려고합니다. 로컬 LAN에서 사용 가능한 SQL Server 이름을 모두 찾을 수 있지만 해당 인스턴스 이름을 찾을 수 없습니다. 일부 서버가 기본 인스턴스가있는 일부 서버는이 코드는 모든 SQL Server 인스턴스를 얻을 오전 pcname\sqlexpress로컬 nework에서 모든 SQL Server 인스턴스를 찾으십시오.

처럼 특정 인스턴스 이름을 가지고 있기 때문에 일부 SQL 서버에

나는 SQL Server 인스턴스 이름이 필요합니다 ..

DataTable dt = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources(); 

저는 이러한 결과를 얻기 ..

enter image description here

+1

제발, 당신의 질문 ("프로그래밍 방식으로 SQL 서버의 모든 인스턴스를 찾으십시오)와 매우 유사 합니다이 게시물을 봐 : http://stackoverflow.com/q/13363215/771579 –

답변

1

이 호출이 부분적으로 전체 또는 실패 할 이유가 많이 있습니다.

From MSDN :

목록은 시간 제한 및 네트워크 트래픽 등의 요인에 따라 달라질 수 있습니다. 이로 인해 두 번의 연속 통화에서 목록이 달라질 수 있습니다. 동일한 네트워크에있는 서버 만 나열됩니다. 브로드 캐스트 패킷은 일반적으로 라우터를 트래버스하지 않으므로 목록에 서버가 표시되지 않을 수 있습니다. 그러나 여러 호출간에 안정적입니다. 나열된 서버에는 IsClustered 및 버전과 같은 추가 정보가 있거나 없을 수 있습니다. 이는 목록을 얻은 방법에 달려 있습니다. SQL Server 브라우저 서비스를 통해 나열된 서버는 Windows 인프라를 통해 발견 된 것보다 더 자세한 정보를 가지며 이름 만 나열됩니다.

서버 열거는 완전 신뢰 상태에서만 실행될 때만 사용할 수 있습니다. 부분적으로 신뢰할 수있는 환경에서 실행되는 어셈블리는 SqlClientPermission CAS (코드 액세스 보안) 권한이 있어도 사용할 수 없습니다. SQL Server는 SQL Browser라는 외부 Windows 서비스를 사용하여 SqlDataSourceEnumerator에 대한 정보를 제공합니다. 이 서비스는 기본적으로 사용하도록 설정되어 있지만 관리자는이 서비스를 해제하거나 비활성화하여 서버 인스턴스를이 클래스에서 볼 수 없게 만들 수 있습니다.

@Orlando 노트로이 몇 가지 솔루션을 당신에게 제공 할 수 있습니다 :

Find all instances of sql server programmatically

-1

실행하여 C#을 측면

select @@servername + '\' + @@servicename 

을이를 실행하는 저장 프로 시저 및 데이터 테이블에서 반환 그런 다음 사용하십시오.

+1

나는 OP doesnt 서버 또는 서비스가 어디에 있는지 알 수 없으므로 서버/서비스에서 sql을 실행할 수 없습니다. – paqogomez

+1

예 서버 이름을 알지 못하면 어떻게 쿼리를 실행할 수 있습니까? –

관련 문제