web-dev-qa-db-ja.com

SQL Serverのリンクサーバーデータベースを使用してビューを作成する

リンクサーバーデータベースにビューを作成するにはどうすればよいですか。たとえば、[5.6.7.8]にリンクサーバー[1.2.3.4]があります。両方のdbサーバーはSQL Sserver 2005です。リンクサーバーのテーブルを使用して[5.6.7.8]にビューを作成します。

編集:

フルネーム[1.2.3.4] .db.dbo.tableを使用して作成すると、このエラーが発生します。

SQL実行エラー。

実行されたSQLステートメント:SELECT * FROM 1.2.3.4.db.dbo.table (かっこがないことがわかります。) =エラーソース:.Net SqlClientデータプロバイダーエラーメッセージ: '0.0'付近の構文が正しくありません。 ---> IPアドレスの一部。

これはManagementStudioで作成しています。まだ作成されていないため、使用していません。 IPを変更しました。画像では、IPの前後にブラケットがないことがわかりますが、指定するとエラーでこれらのブラケットが削除されます。

ありがとう。

15
Kashif

4つの部分からなる修飾名を使用する必要があります:linkedserver.database.schema.table

SELECT * FROM [1.2.3.4].Northwind.dbo.Customers

こちらが オブジェクト名へのアクセス に関するMSDNの記事です。

SQL管理ツールを使用するのではなく、手動でビューを作成することをお勧めします。

CREATE VIEW [dbo].[sywx]
AS
    SELECT  *
    FROM    [1.2.3.4].Atia.dbo.IpPbxDCR
GO

また、可能であれば、リンクサーバーにはIPアドレスではなく名前を使用することをお勧めします。

20
Ryan

SQL Management Studioの問題です。 Management Studio NEW VIEWを使用してビューを作成しようとすると、エラーの誤った構文が表示されます。

しかし、SQLクエリを使用する場合:

CREATE VIEW [dbo].[viewname] 
AS 
    SELECT  * 
    FROM    [0.0.0.0].database.dbo.table 
GO 

その後、動作します。

テストするには、ビューを更新したときに作成されたビューを確認します。ビューから選択クエリを実行するだけの場合、ビューは結果を返します。

ただし、そのビューのデザインモードに入り、デザインクエリを実行しようとすると、ビューが正常に作成されていても、エラーが再び表示されます。

12
Phil Choo

主な問題は、リンクサーバーに番号(IPアドレス)で名前を付けることです。私にとってうまくいった唯一の方法は、ドット '。'なしで私のリンクサーバーにアルファベットの名前を使用することでした。次のコード行を使用して、リンクサーバーと認証を追加できます。

    EXEC sp_addlinkedserver   
        @server='TEST_LINK', 
        @srvproduct='',
        @provider='SQLNCLI', 
        @datasrc='tcp:0.0.0.0'

    EXEC sp_addlinkedsrvlogin
        @useself='FALSE',
        @rmtsrvname='TEST_LINK',
        @rmtuser='user',
        @rmtpassword='secret'

あなたは元の答えを見つけることができます ここ

2
Hossein Sarshar

リンクサーバーが設定されている場合は、4つの部分からなる修飾名を使用して、サーバー上のテーブルを参照するだけです。

linkedserver.database.schema.table

したがって、リンクサーバー名が[0.0.0.0]の場合、テーブルを次のように参照できます。

[0.0.0.0].database.schema.table
2
David M

Webサービス名のピリオドを使用するリンクサーバーの場合-これは機能しません。
コードの詳細と違いの手順は、次の場所に掲載されています。
http://www.access-programmers.co.uk/forums/showthread.php?t=260764
例えば。 FROM [V2.Egg.COM]..[NAT_DBA].[NV_WELLS]
SSMS 2008では、[V2.Egg.COM] ..の周りの角括弧はエディターによって削除されます。 4つ以上のパーツであるため、更新は失敗します。
回避策を見つけるために無駄な検索をしました。
上記のリンクに、機能するスクリプトが掲載されています。

1
Rx_

リンクサーバーエントリには認証の詳細も含まれているため、アクセスする前にリンクサーバーを定義する必要があります。

リンクサーバーを作成したら、ドット表記法servername.database。[owner] .objectを使用して、データベースとそのオブジェクトにアクセスできます。

0
devio

また、リンクサーバーからビューにテーブル/ビューオブジェクトをドラッグアンドドロップするだけで、Management Studioが4つの部分からなる参照を作成します。

0
Simon