これは一日中私を殺してきました=D。助けてください!
シナリオ1:同じサーバー(A、B)上の2つのDBとAには3つのテーブルがあります。クエリはBから実行されます。
シナリオ2:2つのDBの一方のサーバーがもう一方のサーバーにリンクされています。(BにはリンクAがあります)そしてAには3つのテーブルがあります。クエリはBから実行されます。
シナリオ1(リンクされていないサーバー)の場合:
SET @val = ''
SELECT @val = @val + 'Hello, my name is ' + [name] + '!' + CHAR(10) + CHAR(13)
FROM A.sys.tables
戻り値:こんにちは、私の名前はTable1です!こんにちは、私の名前はTable2です!こんにちは、私の名前はTable3です!
シナリオ2(リンクサーバー)の場合:
SET @val = ''
SELECT @val = @val + 'Hello, my name is ' + [name] + '!' + CHAR(10) + CHAR(13)
FROM LINKED.A.sys.tables
戻り値:こんにちは、私の名前はTable3です!
なぜこれらは違うのですか?リンクサーバーでopenquery()を使用すると、結果はシナリオ1と同じになります。可能であればopenquery()の使用を避けようとしています。ありがとう!