2017-11-09 13 views
0

로컬 쿼리로 연결된 서버 쿼리의 결과를 비교하려고합니다. 내가하려고하는 것은 로그인이 한 서버에 있지만 다른 서버에는 존재하지 않는지 확인하는 것입니다. 그냥 윈도우 인증 계정은 현재 괜찮습니다.로컬 쿼리와 연결된 서버 쿼리의 결과를 비교하는 T-sql

나의 현재 쿼리

Select name 
from [linkedServer].master.[sys].[server_principals] 
Where name not in ('Select name from sys.server_principals') 

가 내가 돌아 가야하는 것은 단지 무시 곳과 연결된 서버 쿼리의 결과입니다. 두 결과를 비교하는 방법은 무엇입니까?

+0

결과가 실제로 부정확하다고 생각하는 이유는 무엇입니까? –

+1

@DanBracuk - 그들은 기본적으로 [linkedServer] .master. [sys]. [server_principals]에서 이름을 선택하는 것과 같습니다. 이름 <> 'select ...''- 작은 ​​따옴표는 질문. –

답변

0

먼저 not exists을 사용하십시오. 둘째, 나는 당신의 작은 따옴표가 잘못 생각 : 서브 쿼리에서 어떤 값이 not in 반환하지 행의 경우 때문에

select sp.name 
from [linkedServer].master.[sys].[server_principals] sp 
where not exists (select 1 
        from sys.server_principals sp2 
        where sp2.name = sp.name 
       ); 

내가 강하게, 오히려 not in보다 하위 쿼리와 not exists을 사용하는 습관을하는 것이 좋습니다 NULL. 그것은 일반적으로 바람직한 행동이 아닙니다.

+0

뭔가를 수행하는 방법은 항상 여러 가지가 있으며,이 경우에는 'except'쿼리를 사용합니다. –

+0

제안 된 내용을 제외하고 변경되었습니다. – SQLguy123