2016-10-20 3 views
-1

라이브 프로덕션 데이터베이스에서 데이터웨어 하우스의 일부 테이블을 새로 고치려고하며 레코드 당 데이터를 변경하는 트랜잭션 테이블의 병합을 사용하고 기록/로그 테이블의 삽입을 사용하고 있습니다.).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