SSMS -

2016-08-11 2 views
2

は、だから私は、私はSSMSでSQLCMDモードで実行しようとしている。このクエリ持っている単一のクエリで複数のサーバを照会: SSMS -

:CONNECT SERVER1 
    select * 
    from [SERVER1].DB1.dbo.Project 
    where id not in 
    (
     :CONNECT [SERVER2] 
     select distinct id from [SERVER2].DB2.dbo.Project 
); 

しかし、このエラーを取得し、私は確信していない何を間違っている。どんな助けもありがとう。ありがとう!

致命的なスクリプトエラーです。 SQLCMD スクリプトで指定された接続を開くことができません。

答えて

3

これはSQLCMDクエリには有効ではありません。このようにしようとしていることはできません。

リンクされたサーバーには、4つの部分からなる名前を付けて接続します。それから制御言語を取り出してください。ここにはSQLCMDは必要ありません。

select * 
    from [SERVER1].DB1.dbo.Project 
    where id not in 
    (
     select distinct id from [SERVER2].DB2.dbo.Project 
); 
+0

私はこれまでこれを試しましたが、接続されたデータベースに応じて選択クエリオブジェクトに「無効なオブジェクト名」エラーが発生しました。たとえば、Server1.db1で新しいクエリーウィンドウを開いた場合、無効なオブジェクト名Server2.db2が返されます。Server2.db2から新しいクエリーウィンドウを開くと、 'Invalid object name'が表示されますSerer1.db1。私はまた、トップでUSE Masterを使用しようとしましたが、その違いは違います。 – User123

+0

Server1とServer2という名前でリンクサーバーを設定していますか? –

+0

私はしません。そうする別の方法がありますか?私がローカルデータベースにアクション(sp_addlinkedserver)を実行する権限を持っていないというメッセージが表示されるので – User123

関連する問題