我在事务范围内从.NET调用的SQL Server T-SQL中存储了过程。如何在T-SQL中的事务外执行插入和更新
在我的存储过程中,我正在做一些日志记录到一些审计表。我在审计表中插入一行,然后在事务中稍后通过更新填充更多信息。
我发现的是,如果有几个人同时尝试同样的事情,其中1或2个人将成为交易死锁受害者。目前,我正在假设在插入审计表时发生某种锁定。
我想执行对正在执行的事务之外的审计表的插入和更新,因此无论如何审计都会发生,即使事务回滚。我希望这可以阻止发生的任何锁定,允许一个以上的人一次执行该程序。
任何人都可以帮助我在T-SQL中做到这一点?
感谢, 丰富
更新 - 因为我已经发现,审计是无关的事务死锁,由于使用SQL事件探查乔希的建议追查僵局的根源。
你审计表有外键到你的主'热'表吗? – 2009-01-27 14:05:51
种类 - 如果我插入一个新行,我创建一个'插入'审计记录。然后我创建新行,包括审计表中的密钥以显示创建该行的审计操作。然后,我使用新行的ID更新审计记录,以显示创建的内容。虽然没有关系。 – Rich 2009-01-27 14:39:42
好吧,我只是GOOGLE:抑制sql事务,这个问题是第三个有趣的连接 – JoshBerke 2009-01-27 14:56:12