問題タブ [linked-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
32364 参照

sql-server - SQLサーバーを使用してリモートデータベースを照会していますか?

sp_addlinkedserver を使用してリモート マシンのデータベースにアクセスしました。現在、データベースに対して明示的にクエリを作成しています。

select * from [server\instance].database.owner.tablename

これで、

  1. [Server\instance] : これは明示的に指定する必要があります
  2. [データベース] : ms_ForEachDB のようなクエリを使用して、指定したインスタンスのデータベースを検索できますか?
  3. [所有者] : クエリを使用してデータベースの所有者名を見つけることができますか?

これらの値がクエリを使用して見つかった場合、EXEC() を使用してこれを実行する必要がありますか?

皆さんありがとう、

0 投票する
1 に答える
18801 参照

sql-server - SQL Server エラー:「プレフィックスの最大数です。最大数は 3 です」サブセレクト構文で

クロスサーバー更新を実行しようとしています:

エラーが発生します:

何を与える?


注:クエリを読みにくい結合形式に再配置します。

エラーになりません。

こちらもご覧ください

0 投票する
1 に答える
7277 参照

sql-server - 簡単なリンクサーバーの選択クエリを最適化するには?

私は列を持つテーブルと呼ばれるテーブルを持っています:

  • ID (整数、主キー、クラスター化された、一意のインデックス)
  • TEXT (varchar 15)

LSと呼ばれる MSSQL リンク サーバー上。リンクされたサーバーは、同じサーバー コンピューター上にあります。と:

私が電話するとき:

400 ミリ秒かかります。

私が電話するとき:

200ミリ秒かかります

そして、LSサーバーにいる間にクエリを直接呼び出すと:

100 ミリ秒かかります。

多くの場所で OPENQUERY の方が速いと読んだことがありますが、この単純なケースではうまくいかないようです。このクエリを LS から直接ではなく、別のサーバーから呼び出す場合に高速化するにはどうすればよいですか?

0 投票する
1 に答える
50 参照

sql-server - SQL Server 2000 は、リンクされたサーバー全体のビューの結合に対するビューでインデックスを使用できますか?

次のシナリオがあります。

2 台の DB サーバー (相互にリンク)

DB1 には、トランザクション レコードを含む (大きな) テーブルがあります。 DB2 には、トランザクション レコードを含む (まだそれほど大きくはない) テーブルがあります (性質は似ていますが、システムが異なるため、一部のデータはありません)。 DB1 のトランザクション テーブルからレコードを取得し、DB1 の多数のテーブルと結合します。

DB1 のデータを使用して、DB2 のデータを DB1 のデータのように見せることができます。

DB2 からトランザクション データを取得し、DB1 のデータと結合して DB1 のトランザクション データと同じ列を持つビューを DB1 に作成し、DB1 のデータと最初のデータを結合する別のビューを作成するとします。この 2 番目のビューに対するクエリは、DB1 と DB2 のトランザクション データのインデックスを引き続き利用しますか?

それとも、古いレポートが新しいデータについて報告できるように、新しいシステムから古いシステムにデータを後付けするより良い方法はありますか?

0 投票する
7 に答える
79080 参照

sql - SQLServerでリンクサーバーデータベースを使用してビューを作成する

リンクサーバーデータベースにビューを作成するにはどうすればよいですか。たとえば、[5.6.7.8]にリンクサーバー[1.2.3.4]があります。両方のデータベースサーバーはSQLSserver2005です。リンクサーバーのテーブルを使用して[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の周りに角かっこがないことがわかりますが、私はそれを与えましたが、エラーでこれらの角かっこは削除されます。

ありがとう。

0 投票する
2 に答える
3990 参照

sql-server - SQL Server 2005 のリンク サーバーで TRY CATCH が機能しない

リンク サーバーでストアド プロシージャを実行するときに発生する sql エラーをキャッチしようとしています。どちらのサーバーも SQL Server 2005 を実行しています。

問題を証明するために、次のコードを実行する Raise error という名前のリンク サーバー上にストアド プロシージャを作成しました。

次のコードを使用してリンク サーバー上でストアド プロシージャを直接実行すると、予想どおり「エラー」、「16」の結果セットが返されます (つまり、コードは catch ブロックに入ります)。

ローカル サーバーで次のコードを実行して、リンク サーバーでストアド プロシージャを実行すると、SSMS から「クエリがエラーで完了しました」というメッセージが表示されます.Msg 50000, Level 16, State 1, Procedure RaiseError, Line 13 An error'

私の質問は、リンク サーバー ストアド プロシージャの実行時に生成されたエラーをキャッチできますか?

前もって感謝します!

0 投票する
3 に答える
28957 参照

sql-server - 名前に円記号(\)が含まれているSQLサーバーを参照するにはどうすればよいですか?

ギブンズ:

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

問題:

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

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

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

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

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

0 投票する
1 に答える
1490 参照

sql-server - 2 つのリンク サーバーでストアド プロシージャ呼び出しを使用して結果セットを取得する方法は?

別のサーバー上のプロシージャが再度呼び出されるリンク サーバー上のプロシージャ コールからの結果セットを一時テーブルに格納する際に問題があります。

次のコードを持つストアド プロシージャ sproc1 があり、リンク サーバーで別のプロシージャ sproc2 を呼び出します。

呼び出された sproc2 で、別のリンク サーバーで 3 番目のプロシージャ sproc3 を再度呼び出し、結果セットを返します。

SQL エラー 7391 が発生するため、すべてが機能しません。

リンク サーバー "%ls" の OLE DB プロバイダ "%ls" が分散トランザクションを開始できなかったため、操作を実行できませんでした。

このMicrosoft articleでヒントを既に確認しましたが、成功しませんでした。でも、sproc1 のコードを変更できるかもしれません。一時テーブルと開いているクエリに代わるものはありますか?

サーバー A からサーバー B、サーバー C にストアド プロシージャを呼び出し、結果セットを返すだけで機能します (私はこれをアプリケーションで頻繁に行います)。しかし、一時テーブルと openquery を使用したこの特殊なケースは機能しません!

それとも、私がやろうとしていることは不可能ですか?マイクロソフトの記事には次のように記載されています。

宛先サーバーで参照するオブジェクトを確認してください。ビューまたはストアド プロシージャである場合、またはトリガーの実行を引き起こす場合は、別のサーバーを暗黙的に参照しているかどうかを確認してください。その場合、3 番目のサーバーが問題の原因です。3 番目のサーバーでクエリを直接実行します。3 番目のサーバーでクエリを直接実行できない場合、問題は実際にはリンク サーバー クエリにはありません。根本的な問題を最初に解決します。

これは私の場合ですか?

PS: 3 台のサーバーを使用するアーキテクチャは避けられません。

0 投票する
1 に答える
807 参照

sql-server-2005 - SQL 2005 の ODBC リンク サーバーがリモート ボックスから機能しない

SQL 2005がインストールされた開発ワークステーションがあり、その中にクラリオンデータベースへのodbc接続へのリンクサーバーを作成しました。SQL Mgt studio 内で select ステートメントを実行できます。2 番目のワークステーションを使用して、sql mgt studio を使用して最初のボックスの sql に接続し、まったく同じクエリを試してください。

リンク サーバー "liveclarion" の OLE DB プロバイダー "MSDASQL" が、"[SoftVelocity Inc.][TopSpeed ODBC Driver][ISAM]ISAM テーブルが見つかりません" というメッセージを返しました。

何かご意見は?2番目のSQLサーバーでも同じ機能を持っているようです。リンクされた ODBC クラリオン DB に対するクエリで、リモート SQL mgt studio 接続が成功しません。

すべて Windows 認証と同じ AD ユーザーで行われます。