SQL Server 2005/2008中的异步触发器

Jos*_*lio 34 sql sql-server triggers sql-server-2005

我有触发器操作并将大量数据插入到更改跟踪表中,以便在每次插入,更新和删除时进行审计.

这个触发器很好地完成了它的工作,通过使用它,我们能够根据每个事务的业务需求记录所需的旧值/新值.

但是,在源表有很多列的某些情况下,事务完成最多可能需要30秒才能完成,这是不可接受的.

有没有办法使触发器异步运行?任何例子.

Sea*_*lly 26

您无法使触发器异步运行,但您可以让触发器同步向SQL Service Broker队列发送消息.然后,存储过程可以异步处理队列.

  • 如果您回滚事务,它将恢复"发送到队列".如果处理队列时发生错误,则处理器可以发送对原始消息的回复.异步处理与传统的sql不完全相同,但您拥有可靠处理所需的所有工具. (4认同)
  • 为了提交或回滚事务,您必须等到一切都成功(提交)或某些事情失败(回滚).异步意味着您不必等待它完成以继续其余的逻辑. (2认同)