변경 데이터 캡처-누가 변경했는지 확인하는 방법


10

CDC가 식별 한 변경 사항을 추적합니다.

내 날짜 시간 해킹 라인을 따라 suser_sname을 cdc 변경 트랙 테이블의 기본값으로 새 필드로 추가하여 동일한 접근 방식을 시도했습니다. 그러나 기본 테이블에서 변경을 시작한 사용자가 아닌 cdc 프로세스의 소유자를 반환하는 것으로 보입니다. 또한 original_login을 시도했지만 SQL 서비스 계정 로그인을 반환합니다. 다시 말하지만 변경을 시작한 사용자가 아닌 cdc 프로세스와 관련이있을 수 있습니다.

스택 오버플로 에서 비슷한 질문을 찾았 지만 프론트 엔드 또는 트리거를 통해 변경 사항을 추적하는 것 외에는 대답이 없었습니다 .cdc 사용의 목적을 어기는 것 같습니다. 나는 다시 게시하지 않을 것이지만 원본이 stackoverflow에 있었기 때문에 특히 R2 또는 2012가 더 나은 방법을 도입했다면 여기에서 시도해 볼 것이라고 생각했습니다.

간단히 말해 : 누가 변경 데이터 캡처를 변경했는지 어떻게 알 수 있습니까?

답변:


7

이에 대한 버그를 제기했지만 "디자인 상"으로 닫혔습니다.

http://connect.microsoft.com/SQLServer/feedback/details/283707/cdc-options-to-capture-more-data-username-date-time-etc

불행히도이 정보 (및 가능한 한 많은 정보를 CDC 데이터와 상관 시키려면 일부 사용자 정의 코드)를 얻기 위해 다른 기술 (예 : SQL 감사 또는 트리거)을 사용해야합니다. SQL Server MVP Deep Dives (볼륨 1) 책의 "SQL Server 감사, 변경 내용 추적 및 변경 데이터 캡처"장에서도이 결함에 대해 썼습니다 .

더 나은 해결 방법이 없어 죄송하지만 CDC의 기본 제공 기능은 요구 사항을 충족하지 못합니다. :-(


@RThomas 항목이 닫혀 있어도 여전히 항목에 투표 할 수 있습니다. 때때로 다시 방문합니다. 투표보다 더 유용한 것은 누락 된 기능을 해결하기 위해 사물을 리팩토링하는 비용을 포함하여이 정보를 유용하게 만드는 비즈니스 요구 사항의 세부 사항을 설명하는 주석을 추가하는 것입니다. 나는 질적 데이터가 어떻게 양적 데이터보다 클 수 있는지에 대해 조금 썼다 .
— Aaron Bertrand

알아두면 좋겠다. 폐쇄는 투표에 대한 폐쇄도 의미한다고 생각했다. 나는 오라클이 CDC 구현에서 이것을 제공한다고 내 의견에서 지적했다. 논리적으로 보입니다. docs.oracle.com/cd/A91202_01/901_doc/server.901/a90237/…
— RThomas 2013

6

열을 추가하고 테이블에 트리거를 설정하여 삽입 / 업데이트 / 삭제시 사용자를 채우면 cdc가이를 저장합니다. 컨텍스트 정보를 사용하여 사용자 이름을 전달하거나 실제 세션에서 UI를 통해 사용자 이름을 가져올 수 있습니다.

SET @CapturedBy = CAST(REPLACE(CAST(CONTEXT_INFO() AS VARCHAR(10)),CHAR(0),'''''''') AS INT)

IF(@CapturedBy) IS NULL
    BEGIN
       SELECT @CapturedBy = P.[Code]
       FROM sys.dm_exec_sessions AS S
         INNER JOIN [dbo].[Person] AS P
          ON S.[login_name] = P.[User_Name]
       WHERE S.[session_id] = @@spid
    END

0

기본 테이블에 UpdatedBy 필드를 추가하고 기본값을 SUSER_NAME () 또는 ORIGINAL_LOGIN ()으로 설정하고 CDC가 해당 데이터를 채울 수 있습니까? 나는 그것이 당신이 찾고있는 것과 동일한 정보를 줄 것이라고 믿습니다.


그것은 당신에게 cdc의 svc 계정 / 소유자를 얻는 것입니다, 당신은 내가 그런 것들을 시도하고 2 월에 원래 질문 방식으로 결과를 문서화했음을 알 수 있습니다.
— RThomas

귀하의 의견에 따르면 ChangeData 테이블에 추가했습니다. ChangeData 테이블이 기반으로하는 원래 테이블에 대해 이야기하고 있습니다. 내가 삽입이 것 만 일 게시 한 후 그러나 나는 깨달았다
— 요리사

아아, 그것을 잡지 않았다. 나는 당신의 말을 지금 얻습니다.
— RThomas 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.