2012-07-05 5 views
0

Предположим, что у меня есть процесс, который обновляет запись и обнаруживает блокировку записи, предотвращая ее продолжение. Я предполагаю, что процесс обычно блокирует (в отличие от отказа и требует приложения для реализации собственной логики повтора).Ошибка блокировки SQL Server

Предполагая, что это так, как именно этот блок/блокировка освобождается? Я вижу две общие альтернативы: (1) драйвер опроса SQL Server каждые N миллисекунд; (2) SQL Server сигнализирует драйвер, когда блокировка освобождена.

Я уверен, что существует некоторая изменчивость между драйверами и конфигурацией и т. Д., Я ищу общую идею.

ответ

2

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

+0

Крысы! Ударьте меня к этому ... :-) – RBarryYoung

+0

Спасибо за ясный ответ, приветствия! – GregT

1

Клиентские «драйверы» обычно не участвуют и не сообщают о блокировке SQL Server. SQL Server делает, чтобы сообщить клиенту, когда их запрос команды (обычно пакет) завершил выполнение и/или готов передать данные обратно клиенту.

Смежные вопросы