我正在尝试从代码中运行大量更新语句,并且我们需要总结审核日志的每个操作的更改内容。
更新基本上将包含数十个表的整个图表保存到SQL Server。现在,在我们开始之前,我们从所有表中收集数据,将图表组合为“之前”图片,应用更新,然后从所有表中重新收集数据,重新组合图表( s)对于“after”,将图形的前后序列化为JSON,然后为ESB队列创建一条消息,供进程外消费者查看图形,识别增量并更新审计日志。所有sql操作都在一个事务中发生。
毋庸置疑,这是一个昂贵且耗时的过程。
我一直在使用T-SQL中的OUTPUT指令,我喜欢在与更新相同的命令中获取操作结果的想法,但似乎有一些限制。例如,理想情况下,如果我能同时恢复INSERTED和DELETED结果集会很棒,但是两个表集之间似乎没有UNION的概念,因此很快就会变得难以处理。另外,因为更新实际上并没有修改每一列,所以我无法进行所做的更改并将它们与DELETED进行比较,因为我们会显示未更改的列的增量。
...但也许我错过了OUTPUT命令的一些语法,或者我没有正确使用它,所以我想我会问SO社区。 p>
在SQL Server中收集更新操作的增量的最有效方法是什么?目标是最小化对SQL Server的调用,并收集编写准确审计日志所需的最少信息量,而无需为每个操作编写大量自定义代码。