Имя: Пароль:
1C
1С v8
Блокировка при проведении РСВ вне транзакции
0 noxxx
 
08.05.13
11:59
Запускаем РСВ в УПП вне транзакции, он всё рассчитывает, выдает сообщения о том сколько итераций расчета было проведено, о том какая точность достигнута, и потом выдает сообщение о том, что превышен интервал ожидания блокировки при записи в регистр (какой точно - уже не помню, но по-моему корректировка себестоимости продукции).

При этом в консоли если смотреть сеансы, то никто другой блокировки не устраивает (колонки Захвачено СУБД и Заблокировано СУБД).

Смотреть блокировки по сеансам - вообще не понимаю что оно показывает и зачем это надо.

Куда можно копнуть?
1 noxxx
 
08.05.13
12:01
Причем это случается и в 2 часа ночи, когда в базе гарантировано никого нет кроме запускающего РСВ.

Фоновых заданий, блокирующих что-либо нет.
2 tushich
 
08.05.13
12:03
(1) режим блокировок какой на конфе стоит?
3 noxxx
 
08.05.13
12:08
(2) Управляемый
4 noxxx
 
08.05.13
12:15
А в документе РСВ режим управления блокировками стоит "Автоматический"
5 tushich
 
08.05.13
12:28
(4) блокировки могут возникать на уровне 1с. Бери ЦУП и мониторь. Можно в ТЖ настроить ведение блокировок 1с, не помню что за параметр. По профайлеру посмотри, это при условии что блокировка уже на сервере. Но если ты один в базе, то врядли может быть ожидание на блокировке.
6 noxxx
 
08.05.13
12:30
(5) Так в том-то и фишка, что в базе нет никого, а блокировка есть.
7 noxxx
 
08.05.13
12:32
(5) А ничего что в конфе стоит управляемый режим, а у документа - автоматический? Не должен ли стоять режим управляемый + автоматический?
8 tushich
 
08.05.13
12:49
(7) Если на конфе стоит Управляемый то для всех транзакций будет управляемый, вне зависимости от того какой режим у объектов.
9 tushich
 
08.05.13
12:51
(6) сам себя ты не можешь блокировать! Никак!
10 tushich
 
08.05.13
12:57
(0) Еще можно текущие блокировки посмотреть в Activity monitor  в Менеджмент студио Скуля. Удачи)
11 Базис
 
naïve
08.05.13
13:01
А зачем ночью запускать РСВ вне транзакции? Я это в обед делаю, чтоб другим меньше мешать. Но ночью-то делайте быстро и в транзакции.
12 noxxx
 
08.05.13
14:45
Еще раз запустил что бы точное сообщение получить.
Я так понимаю это сообщение MS SQL же, а не сервера 1С?

{ОбщийМодуль.КорректировкаСтоимостиУчетЗатрат.Модуль(1258)}: Ошибка при вызове метода контекста (Записать)
       НаборЗаписей.Записать(Ложь);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=38, Severity=10, native=1222, line=1
13 neckto
 
08.05.13
14:59
На каком регистре блокировка?
14 tushich
 
08.05.13
15:00
(12) да это SQL. Стваь точку останова и смотри в (10)
15 noxxx
 
08.05.13
21:45
(14) ОК, спасибо, посмотрю
16 krbIso
 
08.05.13
22:22
1. модификация данных всегда идет в транзакции.
2. проверьте параметр max degree of parallelism в SQL, если 0 то поставьте 1
17 Reaper_1c
 
08.05.13
22:34
(9) У вас серьезный пробел в подготовке. То, что РСВ проводится вне транзакции - значит лишь то, что на уровне 1С действия производятся более чем в одной транзакции. MS SQL в своей работе накладывает блокировки совсем не на отдельные записи, а на диапазоны. При этом еще и тяготеет к эскалации после определенного уровня потребления ресурсов. Возникновение взаимоблокировки в таком режиме не является чем-то из ряда вон выходящим. Если в базе в это время никто не работает - что мешает запустить РСВ как полагается?
18 tushich
 
09.05.13
02:40
(17) т.е. вы хотите сказать что в 1с можно из под одного сеанса заблокировать самого себя? Докажите! На эксперте это преподается как аксиома, м.б. они не правы...
19 Reaper_1c
 
09.05.13
02:41
(18) Это у меня что ли РСВ не проводится?
20 tushich
 
09.05.13
02:44
(17) и при чем здесь дедлок? Если мы говорим об ожидании на блокировке?
21 tushich
 
09.05.13
02:47
(17) и на будущее 1с поддерживает только одну транзакцию в 1м сеансе. Ни вложенных ни паралельных в одном сеансе невозможно.