2014-12-01 1 views
0

데이터 집합에 대한 개별 변경 사항을 매일 추출해야합니다. 따라서 제품 및 고객 정보가 포함 된 14 개의 테이블이 있으며 추출에는 새로 입력 된 각 테이블의 레코드 또는 업데이트 된 열이있는 레코드 만 표시되어야합니다.데이터에 대한 개별 변경 내용보고

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

우리는 SQL Server 2008 R2를 사용하고 있으며 C#으로 개발하고 있습니다.

+0

어쩌면 [SQL 서버 감사 (http://msdn.microsoft.com/en-us/library/cc280386%28v=sql.105%29.aspx) –

답변

0

실수로 복구 할 수 있도록 사용자의 변경 사항을 추적하고자 할 때 기본 테이블이 수정 될 때마다 모든 pks 및 트리거가 작성된 비정규 화 된 '감사'테이블을 만들어 트리거를 추가했습니다. 트리거의

하나였다

CREATE TRIGGER [dbo].[programGroupProcedureCodeModRateDate_insdel] 
    ON [dbo].[programGroupProcedureCodeModRateDate] 
    AFTER insert, delete 
AS 
BEGIN 
    SET NOCOUNT ON; 
    insert into archive 
     select 
      procedureCodeModRate, 
      null as programGroup_svc, null as serviceID, null as serviceDesc, null as isExcludedFromIncreases, 
      null as unitID, 
      null as rateMaskID, null as programGroup_unpub, null as isUnpublished, 
      programGroup_rate, startID, Rate, isDiscontinued, comment, 
      getdate() as lastupdated, Current_User as lastUpdatedBy, 'i' as operation 
     from inserted 

    insert into archive 
     select 
      procedureCodeModRate, 
      null as programGroup_svc, null as serviceID, null as serviceDesc, null as isExcludedFromIncreases, 
      null as unitID, 
      null as rateMaskID, null as programGroup_unpub, null as isUnpublished, 
      programGroup_rate, startID, Rate, isDiscontinued, comment, 
      getdate() as lastupdated, Current_User as lastUpdatedBy, 'd' as operation 
     from deleted 
END 
0

다른 테이블에 트리거를 설정하고 삽입 또는 업데이트가 변경된 필드 및 변경이 발생한 다른 테이블에 기록됩니다.

관련 문제