Если я создаю TransactionScope, есть ли вероятность, что он заблокирует базу данных, если я остановлю ее во время отладки? - PullRequest
0 голосов
/ 11 марта 2011

Я просто отлаживаю эту ошибку, которая неожиданно возникает при записи строки в таблицу.

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

Имеет ли он какое-то отношение к областям транзакций?Мне было интересно, создам ли я область транзакции, отладку и буквально останавливаю приложение в середине отладки до того, как оно достигнет конца области отслеживания - есть ли вероятность, что оно заблокирует базу данных?

Если так, как мне его разблокировать?

ПРИМЕЧАНИЕ. - Это может помочь, прямо сейчас, у меня возникают проблемы при вставке строки в таблицы, но у меня есть доступ и обновление существующих строк

UPDATE -Ну, я сбросил службу SQL Server, и это, кажется, сделал свое дело.Тем не менее, мне любопытно услышать, как он вообще мог заблокироваться - я не хочу, чтобы какая-то часть моего кода делала это и происходила в производстве.

1 Ответ

1 голос
/ 11 марта 2011

Если открытие транзакции БД заблокирует всю базу данных, это будет крайне разочаровывающим. Вообще говоря, SQL Server блокирует для каждой строки и затем усиливает эти блокировки по мере необходимости (здесь я значительно упрощаю вопросы).

У каждой транзакции есть время ожидания для завершения. Если по истечении этого времени вы ни добавите, ни откатитесь, вы получите исключение «Истекло время ожидания».

Что касается разблокировки, вам обычно не о чем беспокоиться. Все разблокировано, как только вы закроете соединение.

...