問題タブ [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.
sql-server - トリガーまたはプロシージャ内のリンク サーバー接続のテスト
リンクサーバー上のローカルテーブルと同様のテーブルを更新するトリガーを作成しました。
CREATE TRIGGER myTtableUpdate ON myTable
AFTER UPDATE
AS
IF (COLUMNS_UPDATED() > 0)
BEGIN
DECLARE @retval int;
BEGIN TRY
EXEC @retval = sys.sp_testlinkedserver N'my_linked_server';
END TRY
BEGIN CATCH
SET @retval = sign(@@error);
END CATCH;
IF (@retval = 0)
BEGIN
UPDATE remoteTable SET remoteTable.datafield = i.datafield
FROM my_linked_server.remote_database.dbo.myTable remoteTable
INNER JOIN inserted i ON (remoteTable.id = i.id)
END
END -- end of trigger
残念ながら、接続がダウンすると
、「Msg 3616, Level 16, State 1, Line 2」というエラー メッセージが表示されます
。バッチが中止され
、ローカルで行われた更新がロールバックされました。
このエラーを維持し、ローカルの更新を維持する方法はありますか?
Windows XP Pro を実行している両方の PC で SQL Server 2005 Express Edition を使用していることに注意してください。
edit1: SQL サーバーは Express Edition
edit2: どちらの PC も Windows XP Pro を実行しているため、これらはサーバーではありません
sql-server-2005 - Openquery は、リンクされたテーブルへの直接のクエリよりもはるかに高速に動作します
なぜこのような大きな違いがあるのか を理解しようとしています
select * from linkedserver..tablename
と
select * from openquery(linkedserver, select * from tablename)
.
4分対13秒。
sql-server - SQLServerリンクサーバークエリのメモリが不足しています
SQLServerテーブルに選択しようとしているネットワーク共有にDBFファイルがあります。
このクエリ:
...このエラーをスローします:
リンクサーバー"MyLinkedServer"のOLEDBプロバイダー"MSDASQL"は、メッセージ "[Microsoft] [ODBC VisualFoxProDriver]ファイルマップに十分なメモリがありません。"を返しました。
メッセージ7399、レベル16、状態1、行11リンクサーバー"MyLinkedServer"のOLEDBプロバイダー"MSDASQL"がエラーを報告しました。プロバイダーのメモリが不足しました。
メッセージ7320、レベル16、状態2、行11リンクサーバー「MyLinkedServer」のOLEDBプロバイダー「MSDASQL」に対してクエリ「SELECT*FROMDP」を実行できません。
SYS(3050)を使用してFoxProのメモリを解放する方法について読みました。リンクサーバーに対してそれを実行する方法がわかりません。
tsql - T-SQL 2000: 4 つの部分からなるテーブル名
私は通常、リンクされたサーバーを使用しないため、ここで何が間違っているのかわかりません。
次のようなクエリは、SQL 2000 からリンクされた foxpro サーバーに対して機能します。
ただし、インターネットで調査すると、次のようなものも機能するはずです。
しかし、私はこのエラーを受け取ります:
ServerAlias.Category.Schema.TableName であるはずですが、リンク サーバーで sp_ tables _ex を実行すると、すべてのテーブルのカテゴリについて、データ ファイルがある場所へのネットワーク パスを取得するだけで、スキーマは null になります。 .
このサーバーのセットアップは正しくありませんか? それとも、私がやろうとしていることは不可能ですか?
sql - 2005 インスタンスのリンクされた 2008 SQL サーバーの「キャスト仕様の無効な文字値」
2005 から 2008 の Microsoft SQL Server からリンク サーバーを作成しようとしています。私は 2005 のインスタンスで定期的にこれを行っていますが、これは SQL 2008 への長い旅の最初のステップです。他のリンク サーバーと同じようにリンク サーバーを作成できます。エラーは発生しませんが、リンク サーバーを使用しようとするたびにサーバー (単純な "SELECT *" ステートメントなど) の場合、SSMS で次のエラーが発生します。
「リンク サーバー {リンク サーバー名} の OLE DB プロバイダー "SQLNCLI" から、"キャスト指定の文字値が無効です" というメッセージが返されました。」
2005 インスタンスで 2008 インスタンスへのリンク サーバーを作成する場合に知っておくべきことは何ですか?
sql-server - 分散クエリのパフォーマンスの問題
以下のコードは正常に機能しますが、実行するには絶対的な時間がかかります。どうすればこれをスピードアップできますか?
背景:ローカルサーバーをリモートサーバーにリンクしました。ローカルサーバーから、リモートサーバーからローカルサーバーにデータを挿入してから、リモートサーバーのテーブルを更新する必要があります。正確な詳細については、スニペットを参照してください。
編集:
さらに、送信されるデータを圧縮/圧縮することはできますか?
sql-server - リンクされたサーバーを介したリモート SP 呼び出し。非同期かどうか?
リンクされた2つのサーバーをセットアップしました。ローカル サーバーから、リモート サーバーで実行される SP を実行しています。
スクリプトの次の部分では、REMOTE SERVER 上の SP を介して行われた変更から LOCAL SERVER に INSERT DATA を実行する必要があります。
したがって、私の質問は、このプロセスは非同期ですか、それとも同期ですか?
sql-server - クエリ内のデータの圧縮
それぞれローカルとリモートという2つのリンクサーバーがあるとします。
ローカルからリモートに(またはその逆に)送信する必要のあるデータを圧縮(および解凍)する構文はありますか?
たとえば、リモートデータベースのデータでローカルデータベースを更新する場合は、次のようにします。
リモートからローカルに送信されるデータを圧縮して、帯域幅のコストと実行時間を削減するために適用できる構文はありますか?
sql-server-2005 - 単一の大きな (30,000 行) テーブルをあるデータベースから別のデータベースにコピーする最速の方法は?
SQL Server 2005 データベースに大きなテーブルがあり、それを別のデータベースにコピーしたいと考えています。
これを行う最速の方法は何ですか? サーバーをリンクして挿入を行うための近道はありますか?
sql - リンクサーバーのプロファイリング
一連のストアド プロシージャを最適化しようとしています。これらのストアド プロシージャはサーバー A にあり、次のアクションを実行します。
サーバー A のパラメーター化されたクエリに基づいてサーバー B のデータを削除する
DELETE FROM B (リンク サーバー経由)
DO SOME JOIN ON A
WHERE Ax IN (@ID1、@ID2、@ID3、@ID4)サーバー A のパラメーター化されたクエリに基づいて、サーバー B にデータを挿入します。
INSERT INTO B (リンク サーバー経由)
DO SOME JOIN ON A
WHERE Ax IN (@ID1、@ID2、@ID3、@ID4)
ストアド プロシージャのプロファイルを作成しようとすると、有用なトレース ファイルが得られません。サーバー A をトレースすると、ストアド プロシージャの実行のみが表示されますが、リンク サーバーを介してサーバー B を参照しているため、ストアド プロシージャの内部クエリは表示されません。サーバー B をトレースすると、サーバー A のストアド プロシージャに関連するクエリが表示されません。これは、ストアド プロシージャが実際にサーバー A で実行されたためだと思います。
要するに、これらのクエリをサーバー A のストアド プロシージャの一部として追跡し、サーバー A と B で実行されるクエリを最適化するにはどうすればよいでしょうか?