我正在寻找一种与Change Data Capture(CDC)完全相同的审核解决方案,除了我需要它还跟踪进行更改的应用程序用户。我目前正在使用SQL Server 2012 Enterprise,可能会在今年晚些时候升级到2014年。
我们已经有一个利用删除,插入和更新触发器的审计解决方案,但是一些新要求可能会迫使我们更新每个审计触发器和相应的审计表。考虑到我们多年来遇到的各种问题,这似乎是重新评估并可能取代解决方案的好时机。
为了让您了解我目前正在使用的内容(并且可以利用),我们使用存储过程(ConnectionInitialize)在表(ApplicationUser)中存储带有SPID的用户ID,然后我们完成删除,插入和更新后,使用另一个存储过程(ConnectionReset)删除行。
如果我们使用CDC,我会考虑在cdc.lsn_time_mapping表之类的内容中添加一个触发器,但我找不到将LSN映射回SPID(因此也就是用户ID)的方法用过的。这也提出了一些其他问题,因为CDC总是有点落后。
我稍微调查了SQL Server Audit,但这带来了一些挑战。我们使用透明数据加密(TDE)来满足我们的一些安全要求,但SQL Server Audit看起来需要一个单独的加密策略;那个和我对列比对实际的SQL语句更感兴趣。即使这样,这些对我来说也不是违规行为,所以我还在调查它。
鉴于我想要完成的任务,有没有人有任何反馈或建议?
答案 0 :(得分:1)
CDC本身并不符合要求。原因是CDC只会抓取您的数据的更改,而不是任何进行这些更改的基础上下文。但是,如果您愿意使用某些审核列标记数据,则可以获得您正在寻找的内容。基本思路是将一列添加到表中(或者如果您无法以任何理由修改实际表,则添加到另一个表中)并将其填充到上次修改记录的用户(非常简单到通过插入/更新触发器来完成)。一旦这是实际数据,您可以根据需要使用它(CDC是一种可能的机制)。
答案 1 :(得分:1)
迟到的答案,但希望有用。
第三方工具ApexSQL Audit能够满足您的要求。我以前的公司已经使用它多年了,他们对此感到满意。
您可以阅读有用的comparison article以查找有关CDC和CD的审核数据,审核机制,完整性保护等的更多详细信息。审核工具在一个地方。