Тупик в SQL Server 2008 - PullRequest
       3

Тупик в SQL Server 2008

0 голосов
/ 28 сентября 2011

У меня есть две хранимые процедуры, обе вставляют строки в одну и ту же таблицу.

После вызова хранимой процедуры через регулярный интервал времени и другого вызова хранимой процедуры по событию пользователя.Иногда обе хранимые процедуры вызываются вместе, и в это время возникает тупик.

Как я могу решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 28 сентября 2011

Вы можете заблокировать стол в начале обоих своих звезд. Таким образом, не будет взаимоблокировок, потому что модификация данных должна будет ждать, пока другой sproc завершит работу. Смотрите следующую команду:

select 1 from theTable with (tablock, holdlock) where 1=0;

Это также необходимо сделать внутри транзакции. Таблица будет редактируемой после завершения транзакции.

0 голосов
/ 28 сентября 2011

Вы также можете рассмотреть возможность обнаружения условия и повторной попытки. Отложите каждую процедуру на короткое случайное время

0 голосов
/ 28 сентября 2011

Блокировка в начале SP и разблокировка в конце.

http://msdn.microsoft.com/en-us/library/ms187749.aspx

и

http://msdn.microsoft.com/en-us/library/ms190345.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...