У меня есть хранимые процедуры в SQL Server T-SQL, которые вызываются из .NET в рамках транзакции.
В рамках моей хранимой процедуры я веду запись в некоторые таблицы аудита. Я вставляю строку в таблицу аудита, а затем в транзакции заполняю ее дополнительной информацией посредством обновления.
Я обнаружил, что если несколько человек попробуют одну и ту же вещь одновременно, 1 или 2 из них станут жертвами тупиковых ситуаций транзакций. В настоящий момент я предполагаю, что происходит какая-то блокировка при вставке в таблицы аудита.
Я хотел бы выполнить вставки и обновления таблиц аудита за пределами транзакции, которую я выполняю, чтобы аудит все равно происходил, даже если транзакция откатывается. Я надеялся, что это может остановить любые блокировки, позволяя более чем одному человеку выполнить процедуру одновременно.
Может кто-нибудь помочь мне сделать это в T-SQL?
Спасибо,
Рич
Обновление. С тех пор я обнаружил, что аудит не связан с тупиком транзакции, благодаря предложению Джоша использовать SQL Profiler для отслеживания источника тупика.