Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можно ли пропускать заблокированные записи?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Доброе время суток.
У меня поверхностное знание SQL, поэтому заранее прошу прощения, если вопрос глупый.
Есть таблица на SQL-сервере (2012), отдельные записи которой периодически редактируются пользователями. Для редактирования используется MS Access (2010). Записей несколько сотен, пользователей несколько десятков, поэтому постоянно какое-то количество записей заблокировано. Несколько раз в день хранимая процедура с помощью запроса UPDATE должна обновить пару полей во всех записях таблицы. Т.к. есть заблокированные записи, то этот процесс зависает надолго. Но обновление всех записей не является обязательным. Можно ли каким-либо образом пропускать заблокированные записи?
Заранее благодарен.
29 дек 18, 13:00    [21776343]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли пропускать заблокированные записи?  [new]
L_argo
Member

Откуда:
Сообщений: 1140
Чтобы не было блокировок, нужно:
1. дочитывать читающие датасеты до конца (в некот. случаях они зачитаны частично и висит т.н. блокировка чтения).
2. не использовать "длинные" транзакции при редактировании.
29 дек 18, 13:24    [21776364]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли пропускать заблокированные записи?  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
придётся вам отказаться от серверного курсора и перейти на клиентский в вашем приложении на акцесс.
прямое редактирование прилинкованных таблиц SQL - это корень ваших проблем.
29 дек 18, 13:31    [21776373]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли пропускать заблокированные записи?  [new]
Mr. X
Member

Откуда:
Сообщений: 17
K-Nick,

Можно, есть особенности https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-2017
see READPAST
29 дек 18, 13:56    [21776404]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли пропускать заблокированные записи?  [new]
invm
Member

Откуда: Москва
Сообщений: 9128
K-Nick
Можно ли каким-либо образом пропускать заблокированные записи?
Можно, но без 100% гарантии.
Примерно так:
update Таблица with (readpast)
 set
  Поле1 = ...,
  Поле2 = ...
where
 ...

В where нужно написать любое фейковое условие, включающее любой столбец таблицы, которое всегда будет истинным.
Например, если в Поле1 не может быть отрицательных значений, то - Поле1 >= 0
29 дек 18, 14:02    [21776409]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли пропускать заблокированные записи?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Спасибо!
Всех с наступающим Новым Годом!
После праздников буду пробовать.
29 дек 18, 14:57    [21776457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить