Простое заявление SQL истекает - PullRequest
0 голосов
/ 19 марта 2020

Это очень простое выражение SQL:

Update FosterHomePaymentIDNo WITH (ROWLOCK) Set FosterHomePaymentIDNo=1296

Но время истекает, когда я выполняю его из контекста ASP. NET приложения WebForms.

* 1005 Может ли это быть как-то связано с rowlock? Как я могу убедиться, что этот оператор SQL выполняется за разумное время без ущерба для целостности таблицы? Я подозреваю, что удаление rowlock могло бы помочь, но тогда мы могли бы столкнуться с различными пользователями, одновременно обновляющими таблицу.

И да, это таблица «следующего идентификатора», которая содержит только один столбец и только один ряд; Я не знаю, почему он был настроен таким образом, вместо использования столбца идентификаторов или даже select max(id) + 1!

1 Ответ

2 голосов
/ 19 марта 2020

Если ОБНОВЛЕНИЕ однострочной таблицы занимает много времени, она, вероятно, заблокирована другим сеансом, который обновил ее в транзакции, которая еще не зафиксирована. Вот почему вы не хотите создавать такие идентификаторы.

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