15

ギブンズ:

  • 1つのSQLServerの名前は次のとおりです。DevServerA
  • もう1つは名前が付けられています:DevServerB\2K5

問題:

からDevServerA、参照するクエリを作成するにはどうすればよいDevServerB\2K5ですか?

サンプルのダミークエリを試しました(から実行DevServerA):

SELECT TOP 1 *  
FROM DevServerB\2K5.master.sys.tables

そして、私はエラーを受け取ります:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '\.'.

ただし、逆の方法(からこのクエリを実行するDevServerB\2K5)が機能するため、構文がほぼ正しいことはわかっています。

SELECT TOP 1 *  
FROM DevServerA.master.sys.tables

DevServerB\2K5から参照する方法を理解するのを手伝ってくださいDevServerA。ありがとう。

4

3 に答える 3

21

4 つの部分からなる名前で、最初の部分がリンク サーバーの名前 (つまり、メタデータ オブジェクト) であり、サーバーの名前 (つまり、ホスト名) ではありません。したがって、リンク サーバーに FOO という名前を付けて、ホスト BAR またはインスタンス FOO\BAR を指すようにすることができます。また、リンク サーバー オブジェクトにスラッシュを含む名前を付けたとしても、名前を引用するだけで、マルチパート名で使用できます。

SELECT TOP 1 *  
FROM [DevServerB\2K5].master.sys.tables
于 2010-03-30T23:10:51.043 に答える
6

角括弧を使用してみてください:

SELECT TOP 1 *  
FROM [DevServerB\2K5].master.sys.tables
于 2010-03-30T23:09:13.410 に答える
0

SQL SERVER 2005 では、次のことが起こりました。

SELECT TOP 1 *   
FROM [DevServerB\2K5].master.sys.tables 

に変更されます

SELECT TOP 1 *   
FROM DevServerB\2K5.master.sys.tables 

SQL Server システムによって、まだエラー メッセージが表示されます: Incorrect syntax near '.'.

'[DevServerB\2K5]' と 'DevServerB\2K5' という 2 つの異なる名前のリンク サーバーで試してみました。

他のアイデアはありますか?

ありがとうアラン・ロバートソン

訂正は次の日に追加されました: 私は部分的に間違っていました。次のような SQL ステートメントを使用してビューを作成しようとすると、次のようになります。

SELECT  *
FROM [DevServerB\2K5].TestDB.dbo.tables 

[ と ] が削除され、ビューを保存できませんが、同じ SQL 文字列を使用してクエリを記述するだけで、正しく機能します。

次のような SQL ステートメントを実行することもできました。

INSERT INTO [DevServerB\2K5].TestDB.dbo.tables ( ... ) ...

やりたいことはできますが、ビューを保存して、[DevServerB\2K5].TestDB データベースのテーブルの SELECT、INSERT、および UPDATE に使用されるビューを使用できれば、はるかに優れていたでしょう。 '\' のためにビューを作成しようとして失敗した元のサーバー。

-ASR-

于 2010-04-09T21:50:59.297 に答える