是否可以阻止触发器在事务中运行?

Jer*_*ins 5 sql sql-server sql-server-2008

根据一些资源,例如这个

在触发器上下文中执行的查询会自动包装在事务中。如果触发代码中有任何分布式查询,事务将自动提升为分布式事务。

简单的问题 - 有没有办法防止这种行为?我正在寻找一种方法来明确阻止触发器中的代码在事务上下文中运行。

Aar*_*and 3

如果您尝试执行异步操作,以便调用事务不必等待,您可以考虑Service Broker,它的设计正是为了实现这一点 - 触发一些异步任务,并将控制权返回给调用者,而不管交易范围。

另一个想法是不让触发器执行工作,而是将工作项弹出到队列表中,并让后台进程连续运行来处理队列。inserted如果您的工作项对/中的数据集进行操作,这不一定容易做到,deleted但如果没有更多上下文,这似乎是一个可行的选择。

我不知道有什么方法可以防止触发器成为调用事务的一部分 - 事实上这就是重点。