SQL Management Studio 内で完全に SQL Server 2008 R2 Web Edition を使用しています。クロスサーバー クエリを実行する必要がありますが、サーバーがリンクされているかどうかに関係なく、クエリは常に「無効なオブジェクト名」を返します。サーバー名を変更すると、期待どおりに「サーバーが見つかりませんでした」が返されます。
sp_addlinkedserver と sp_dropserver を使用してリンクされたデータベースを数回追加および削除し、sys.Servers テーブルをチェックして、クエリのさまざまな順列を試しました。私の推測では、これはリンク サーバーと同じ 4 部構成の名前構文を持つ別の機能であると思われます。
たとえば、次の例では「無効なオブジェクト名」が返されます
SELECT TOP 10 * FROM dbtest.Web.dbo.tblProduct -- this is correct
SELECT TOP 10 * FROM dbtest.Web.dbo.tblProductFake
SELECT TOP 10 * FROM dbtest.WebFake.dbo.tblProduct
サーバー名を意図的に間違った名前に変更すると、予想どおり、次のように「サーバーが見つかりませんでした」が返されます
SELECT TOP 10 * FROM dbtestFake.Web.dbo.tblProduct
SELECT TOP 10 * FROM dbtest1.Web.dbo.tblProduct
SELECT TOP 10 * FROM dbtst.Fake.dbo.tblProduct
同じデータベースからの別のリンクサーバーに対するクエリは、クエリが正しいかどうかに応じて、結果を返すか、「リンクサーバー "dbx" の OLE DB プロバイダー "SQLNCLI10" にテーブルが含まれていません」を返します。 .
さらに奇妙なのは、Management Studio で [サーバー オブジェクト] > [リンクされたサーバー] などに従ってクエリを作成し、[新しいクエリ ウィンドウへの SELECT としてテーブルをスクリプト化] をクリックできることですが、そのクエリには引き続き "オブジェクト名が無効です。」