リンクサーバーデータベースにビューを作成するにはどうすればよいですか。たとえば、[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の前後にブラケットがないことがわかりますが、指定するとエラーでこれらのブラケットが削除されます。
ありがとう。
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アドレスではなく名前を使用することをお勧めします。
SQL Management Studioの問題です。 Management Studio NEW VIEWを使用してビューを作成しようとすると、エラーの誤った構文が表示されます。
しかし、SQLクエリを使用する場合:
CREATE VIEW [dbo].[viewname]
AS
SELECT *
FROM [0.0.0.0].database.dbo.table
GO
その後、動作します。
テストするには、ビューを更新したときに作成されたビューを確認します。ビューから選択クエリを実行するだけの場合、ビューは結果を返します。
ただし、そのビューのデザインモードに入り、デザインクエリを実行しようとすると、ビューが正常に作成されていても、エラーが再び表示されます。
主な問題は、リンクサーバーに番号(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'
あなたは元の答えを見つけることができます ここ
リンクサーバーが設定されている場合は、4つの部分からなる修飾名を使用して、サーバー上のテーブルを参照するだけです。
linkedserver.database.schema.table
したがって、リンクサーバー名が[0.0.0.0]の場合、テーブルを次のように参照できます。
[0.0.0.0].database.schema.table
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つ以上のパーツであるため、更新は失敗します。
回避策を見つけるために無駄な検索をしました。
上記のリンクに、機能するスクリプトが掲載されています。
リンクサーバーエントリには認証の詳細も含まれているため、アクセスする前にリンクサーバーを定義する必要があります。
リンクサーバーを作成したら、ドット表記法servername.database。[owner] .objectを使用して、データベースとそのオブジェクトにアクセスできます。
また、リンクサーバーからビューにテーブル/ビューオブジェクトをドラッグアンドドロップするだけで、Management Studioが4つの部分からなる参照を作成します。