Блокировка при проведении РСВ вне транзакции #664068


#0 by noxxx
Запускаем РСВ в УПП вне транзакции, он всё рассчитывает, выдает сообщения о том сколько итераций расчета было проведено, о том какая точность достигнута, и потом выдает сообщение о том, что превышен интервал ожидания блокировки при записи в регистр (какой точно - уже не помню, но по-моему корректировка себестоимости продукции). При этом в консоли если смотреть сеансы, то никто другой блокировки не устраивает (колонки Захвачено СУБД и Заблокировано СУБД). Смотреть блокировки по сеансам - вообще не понимаю что оно показывает и зачем это надо. Куда можно копнуть?
#1 by noxxx
Причем это случается и в 2 часа ночи, когда в базе гарантировано никого нет кроме запускающего РСВ. Фоновых заданий, блокирующих что-либо нет.
#2 by tushich
режим блокировок какой на конфе стоит?
#3 by noxxx
Управляемый
#4 by noxxx
А в документе РСВ режим управления блокировками стоит "Автоматический"
#5 by tushich
блокировки могут возникать на уровне 1с. Бери ЦУП и мониторь. Можно в ТЖ настроить ведение блокировок 1с, не помню что за параметр. По профайлеру посмотри, это при условии что блокировка уже на сервере. Но если ты один в базе, то врядли может быть ожидание на блокировке.
#6 by noxxx
Так в том-то и фишка, что в базе нет никого, а блокировка есть.
#7 by noxxx
А ничего что в конфе стоит управляемый режим, а у документа - автоматический? Не должен ли стоять режим управляемый + автоматический?
#8 by tushich
Если на конфе стоит Управляемый то для всех транзакций будет управляемый, вне зависимости от того какой режим у объектов.
#9 by tushich
сам себя ты не можешь блокировать! Никак!
#10 by tushich
Еще можно текущие блокировки посмотреть в Activity monitor  в Менеджмент студио Скуля. Удачи)
#11 by Базис
А зачем ночью запускать РСВ вне транзакции? Я это в обед делаю, чтоб другим меньше мешать. Но ночью-то делайте быстро и в транзакции.
#12 by noxxx
Еще раз запустил что бы точное сообщение получить. Я так понимаю это сообщение MS SQL же, а не сервера 1С? {ОбщийМодуль.КорректировкаСтоимостиУчетЗатрат.Модуль(1258)}: Ошибка при вызове метода контекста (Записать)        НаборЗаписей.Записать(Ложь); по причине: Конфликт блокировок при выполнении транзакции: Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
#13 by neckto
На каком регистре блокировка?
#14 by tushich
да это SQL. Стваь точку останова и смотри в
#15 by noxxx
ОК, спасибо, посмотрю
#16 by krbIso
1. модификация данных всегда идет в транзакции. 2. проверьте параметр max degree of parallelism в SQL, если 0 то поставьте 1
#17 by Reaper_1c
У вас серьезный пробел в подготовке. То, что РСВ проводится вне транзакции - значит лишь то, что на уровне 1С действия производятся более чем в одной транзакции. MS SQL в своей работе накладывает блокировки совсем не на отдельные записи, а на диапазоны. При этом еще и тяготеет к эскалации после определенного уровня потребления ресурсов. Возникновение взаимоблокировки в таком режиме не является чем-то из ряда вон выходящим. Если в базе в это время никто не работает - что мешает запустить РСВ как полагается?
#18 by tushich
т.е. вы хотите сказать что в 1с можно из под одного сеанса заблокировать самого себя? Докажите! На эксперте это преподается как аксиома, м.б. они не правы...
#19 by Reaper_1c
Это у меня что ли РСВ не проводится?
#20 by tushich
и при чем здесь дедлок? Если мы говорим об ожидании на блокировке?
#21 by tushich
и на будущее 1с поддерживает только одну транзакцию в 1м сеансе. Ни вложенных ни паралельных в одном сеансе невозможно.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С