1

サーバーを切り替えた後、#tempTable をメモリに保持するにはどうすればよいですか。これは可能ですか?

Select * 
into #tempTable
from dbo.table

サーバー 1 にはサーバー 2 で比較したいデータがありますが、サーバー 2 には読み取り専用アクセス権しかなく (そのため、そこにデータを移動することはできません)、サーバー 2 のテーブルは大きすぎてサーバーに移動できません。 1.これが、新しいサーバーに接続した後、一時テーブルをメモリに保持する方法を知りたい理由です。

どんな助けでも感謝します、ありがとう。

4

2 に答える 2

1

あなたが書くことは可能ですが、テーブルがあるサーバーに一時テーブルを作成するだけです。

あなたはおそらく欲しい:

select *
into #Server2Table
from server2.database.dbo.table

#Server2Tableその後、コピーした同じ接続 (SSMS の同じウィンドウ、同じジョブ ステップ、同じストアド プロシージャなど) で追加のクエリを使用できます。より永続的な場所に必要な場合は、グローバル一時テーブル ( で始まる##) または「実際の」テーブルを使用します。

これには、次のようなものを使用してサーバーをリンクする機能が必要です。

sp_addlinkedserver server2

これを server1 で実行します。おそらく、DBA が設定する必要があります。

クロスサーバー テーブルを一時テーブルにロードすると、クエリの実行速度が速くなることがよくあります。これは、一時テーブルがメモリに格納されているためではありません。これは、SQL オプティマイザーが利用できるように、ローカル サーバー上のテーブルについてより多くの情報を利用できるためです。

于 2013-02-22T18:30:47.843 に答える
0

クエリからデータをエクスポートし、それを最初のサーバーのデータベースにインポートできます。SQL サーバーのインポート/エクスポート ウィザードを使用できます。少し複雑ですが、これが頻繁に発生する場合は、SSIS を使用してこの移動を自動化するか、単に [このパッケージを保存する] ボックスをオンにすることもできます。最初のサーバーにデータを取得したら、好きなことを行うことができます。

于 2013-02-22T18:30:50.180 に答える