Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用最少的SQL调用生成更改日志?_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql server 使用最少的SQL调用生成更改日志?

Sql server 使用最少的SQL调用生成更改日志?,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我正试图从代码中运行许多update语句,我们需要总结审计日志中每个操作所更改的内容 更新基本上将一个由几十个表组成的完整图形持久化到SQL Server。现在,在开始之前,我们从所有表中收集数据,将图形组装为“before”图片,应用更新,然后从所有表中重新收集数据,将“after”的图形重新组装,将before和after图形序列化为JSON,然后,向ESB队列创建一条消息,供非流程使用者浏览图形、识别增量并更新审核日志。所有sql操作都发生在单个事务中 不用说,这是一个既昂贵又耗时的过程

我正试图从代码中运行许多update语句,我们需要总结审计日志中每个操作所更改的内容

更新基本上将一个由几十个表组成的完整图形持久化到SQL Server。现在,在开始之前,我们从所有表中收集数据,将图形组装为“before”图片,应用更新,然后从所有表中重新收集数据,将“after”的图形重新组装,将before和after图形序列化为JSON,然后,向ESB队列创建一条消息,供非流程使用者浏览图形、识别增量并更新审核日志。所有sql操作都发生在单个事务中

不用说,这是一个既昂贵又耗时的过程

我一直在T-SQL中使用OUTPUT指令,我喜欢在与update相同的命令中获得操作结果的想法,但它似乎有一些限制。例如,理想情况下,如果我能同时返回插入的和删除的结果集,那就太好了,但是两个表集之间似乎没有联合的概念,所以这很快就会变得很麻烦。此外,由于更新实际上并没有修改每一列,我无法将我所做的更改与删除的列进行比较,因为我们会为没有更改的列显示增量

…但可能我缺少输出命令的一些语法,或者我没有正确使用它,所以我想我应该询问so社区


在SQL Server中收集更新操作增量的最有效方法是什么?我们的目标是最大限度地减少对SQL Server的调用,并收集编写准确审核日志所需的最少信息量,而无需为每个操作编写大量自定义代码。

您的列可以为空吗?@SqlZim有些是,有些不是。这些表格是多年来各种开发人员的成果,你可以想象没有太多遵循某一特定标准的情况。你看过吗?自2005年以来,它的所有版本都有售。它允许您请求自上次检查以来每个表的更改记录,以及更改原因和(可选)值。检查。@PanagiotisKanavos,我没有。。。我将对此进行研究,但乍一看,这看起来像是一个基于SQL Server的解决方案,所以我希望这会遇到强大力量的抵制,谁想要基于代码的解决方案。@JeremyHolovacs???您是否使用了
sql server
标记???这是一个基于代码的解决方案。超级加速,因为它基于现有的SQL Server功能。如果您的意思是仅限于客户端,那么如果您必须始终将整个数据库而不是更改的10行拉入内存,那么即使是中等数据,这又如何工作呢?您的列可以为空吗?@SqlZim有些是,有些不是。这些表格是多年来各种开发人员的成果,你可以想象没有太多遵循某一特定标准的情况。你看过吗?自2005年以来,它的所有版本都有售。它允许您请求自上次检查以来每个表的更改记录,以及更改原因和(可选)值。检查。@PanagiotisKanavos,我没有。。。我将对此进行研究,但乍一看,这看起来像是一个基于SQL Server的解决方案,所以我希望这会遇到强大力量的抵制,谁想要基于代码的解决方案。@JeremyHolovacs???您是否使用了
sql server
标记???这是一个基于代码的解决方案。超级加速,因为它基于现有的SQL Server功能。如果您的意思是仅限于客户端,那么如果您必须始终将整个数据库而不是更改的10行拉入内存,那么即使是中等数据,这又如何工作呢?