2017-11-09 12 views
0

リンクサーバークエリの結果をローカルクエリと比較しようとしています。私がしようとしているのは、あるサーバ上にどのようなログインが存在するかを知ることです。ちょうどWindowsの認証アカウントは今のところうまくいきます。ローカルクエリとリンクされたサーバークエリの結果を比較するT-sql

私の現在のクエリが

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

私は戻って取得する場合にのみ無視してリンクサーバークエリの結果です。どのように私は2つの結果を比較するために行くのですか?

+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

関連する問題