2016-10-20 46 views
-1

我想從實時生產數據庫刷新我們數據倉庫中的某些表,並且我正在使用合併(用於更改每個記錄的數據的事務表)和插入(用於歷史/日誌表)。使用CTE與直接查詢來自鏈接服務器

我很好奇,看看在影響源數據庫方面使用下面的結構有什麼區別?我需要能夠避免在進行刷新時阻止生產數據庫中的其他會話。

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 

對戰

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

謝謝。

回答

0

你不需要CTE,因爲它是簡單的插入,你在插入之前沒有實現任何邏輯。 如果您想要插入過濾或聚合記錄,那麼您可能需要首先(CTE)方法。

注意:它已經注意到與鏈接的服務器。

+0

感謝您的回覆。我編輯我的帖子,以包括這應避免阻止生產數據庫中的會話。 – Malennn