我在事務範圍內從.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