2016-10-20 6 views
-1

データウェアハウスの一部のテーブルを実稼働データベースからリフレッシュしようとしていますが、Merge(レコードごとのデータを変更するトランザクションテーブル)とInsert(履歴/ログテーブル)。CTEとダイレクトクエリをリンクサーバーから使用

ソースデータベースに影響を及ぼすという点で、以下の構造を使用することの違いは何ですか?このリフレッシュが行われている間は、本番データベースの他のセッションをブロックしないようにする必要があります。

INSERT INTO DW (<field1>,etc.) 
SELECT <field1>,etc. 
FROM [LINKED SERVER].<Schema>.dbo.<DBName> 
WHERE ModifiedDate > @LastModifiedDate 

WITH SRC AS (
    SELECT <field1>,<field2>,etc 
    FROM [LINKED SERVER].<Schema>.dbo.<DBName> 
    WHERE ModifiedDate > @LastModifiedDate 
) 
INSERT INTO DW (<field1>,etc.) 
     SELECT <field1>,etc. 
     FROM SRC 

ありがとうございます。

答えて

0

単純な挿入のため、CTEは必要ありません。挿入する前にロジックを実装していません。 フィルタリングされたレコードまたは集約されたレコードを挿入する場合は、最初に(CTE)アプローチが必要な場合があります。

注:リンクサーバーとは関係ありません。

+0

ありがとうございます。私は、プロダクションデータベースのセッションをブロックしないように投稿を編集しました。 – Malennn

関連する問題