Когда я хотел отслеживать изменения пользователя, чтобы я мог восстановить их ошибки, я создал денормализованную таблицу аудита со всеми 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
Может быть [SQL Server Audit] (http://msdn.microsoft.com/en-us/library/cc280386%28v=sql.105%29.aspx) –