SQL Server Change Data Capture - Capture user who made the change

3.5k views Asked by At

Concerning SQL Server Change Data Capture, can you track the User who has made the change to the row/column data or is there anyway to extend CDC to allow this? I couldn't see anything in the documentation.

2

There are 2 answers

0
TheGameiswar On BEST ANSWER

You can't capture username with CDC..

You have to use Auditing to do so or if this is a one time request,you can query TLOG..

Below is the connect item requesting the same..

CDC : options to capture more data (username, date/time, etc)

You also can use triggers as per this article Playing with CDC in Katmai from Aaron Bertrand..

Create table :

CREATE TABLE cdc.dbo_test_CT_MoreInfo
(
startlsn BINARY(10),
seqval BINARY(10),
operation INT,
username SYSNAME NOT NULL DEFAULT SUSER_SNAME(),
eventDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (startlsn, seqval, operation)
);
GO

create trigger:

CREATE TRIGGER cdc.LogMoreCDCInfo
ON cdc.dbo_test_CT
FOR INSERT
AS
BEGIN
  IF @@ROWCOUNT > 0
  BEGIN
    INSERT cdc.dbo_test_CT_MoreInfo(startlsn,seqval,operation)
      SELECT __$start_lsn, __$seqval, __$operation FROM inserted;
  END
END
GO
0
Marcin Czyz On

You can create a new field where the user’s details, machine, time etc. are stored and updated after each change.

Also, there are third party tools you can use for users auditing – SQL Audit & Compliance manager. I’ve used both and you can’t go wrong with any of them. There are probably more tools like those out there.