2

この (私には奇妙な) 動作に関連する BOL 情報を教えてもらえますか?

簡単なクエリのために、同じテーブル(同じデータベース名、差分サーバー)の本番コピーとステージングコピーに参加する必要がありました。したがって、完全修飾された結合が必要でした。

これはエラーです:

SELECT top 10 *
FROM [172.26.196.105\Staging].[DbName].[dbo].[TableName] 

これは機能します:

SELECT top 10 *
FROM [USCASQL01\STAGING].[DbName].[dbo].[TableName]

編集:明確化...明らかに結合ではありません。これらの選択は、ステージングデータベース/テーブルの完全修飾名を組み立てただけです。これはリンク サーバーではありませんが、私が接続しているサーバーです。

もちろん、これらは同じインスタンスを参照しています。オブジェクト エクスプローラーに表示される IP address\InstanceName を使用すると、「sys.servers にサーバー 'IP address\InstanceName' が見つかりませんでした」というエラーが返されました。確かに、sys.servers は computerName\InstanceName を保存しますが、これは機能します。

一方が機能し、もう一方が機能しないのはなぜですか? IOW、オブジェクト エクスプローラーで問題なく IP/インスタンス名を解決できるのに、TSQL で IP/インスタンス名を解決できないのはなぜですか? ところで、私たちは頻繁に IP を sys.servers に保存していますが、これはたまたまそうではありませんでした。

また、IP のわかりやすい名前のエイリアスを作成できるユーティリティである SQL Server7 (昔) を思い出します。今は見つからないのですが、まだありますか?

ティア

4

1 に答える 1

2

これは、4 部構成の修飾名の最初の部分が、IP またはネットワーク名ではなく、名前によるリンク サーバーへの参照であるためです。そのため、リンク サーバーをセットアップしていない場合は、発生したエラーが発生します。

リンク サーバーを追加する場合は、 を参照してくださいsp_addlinkedserver

これは、4 つのパーツ名がどのように機能するかを説明するBOL ページです。

于 2013-10-08T22:48:44.743 に答える