2

私はシステム管理者である 2 つの SQL Server を持っています。1 つは LIGHT と呼ばれる 2008R2 サーバーで、ボックスのアクティビティはほとんどありません。もう 1 つは、HEAVY と呼ばれる 2005 年のサーバーで、1 日を通してかなり一定の量のアクティビティが見られます。両方のサーバーが同じデータ センターにあります。HEAVY が見えるように LIGHT にリンク サーバーを作成しました。

HEAVY のビューを作成して、ここ数日間の日ごとの場所ごとの売上を多かれ少なかれ合計します。

SELECT BusinessDate,
       Location,
       SUM(Sales)
FROM   Last7DaysOfSales
GROUP BY BusinessDate, Location

SSMS を使用して HEAVY でこのビューを実行すると、30 秒で実行されます。リンクされたサーバー接続を介して LIGHT からこの同じビューを実行すると、17 分かかります。ビューを使用すると、「重い作業」が HEAVY で行われ、ビューの結果が LIGHT に送信されることを期待していました。ばかばかしい実行時間を考えると、LIGHT がすべてのレコードを引っ張ってきて、作業自体を行っているように見えますか?

この問題に対処できる最も効率的な方法は何ですか? HEAVY に実行をローカルで処理させ、結果を LIGHT に渡すことさえ可能ですか? または、HEAVY で毎晩プロセスを作成して、このビューの結果を毎晩テーブルにダンプし、LIGHT にテーブル内のデータを取得させる唯一のオプションですか?

よろしくお願いします。

4

2 に答える 2

1

I would suggest the use of OPENQUERY if you want to force the processing to be done on the remote machine. For example:

SELECT *
FROM   OPENQUERY(
        HEAVY,
        'SELECT BusinessDate,
               Location,
               SUM(Sales)
        FROM   MyDatabase.dbo.Last7DaysOfSales -- Note the dot notation
        GROUP BY BusinessDate, Location')
于 2012-05-30T21:28:53.717 に答える
0

または、ビューまたはストアド プロシージャに配置します。リモートマシンからそれらにアクセスします。

于 2012-05-30T21:36:58.030 に答える