Ошибка MSSQL - Transaction was deadlocked #794469


#0 by ksergey
Добрый день. Есть база 1С, из которой в базу сайта(на платформе MSSQL) выгружаются данные по договорам. После обновления данных в базе сайта последним шагом идет запуск сохраненной процедуры (её назначение мне не известно). Последнее время стала возникать вот такая ошибка. Ошибка при выполнении процедуры AgreeNumLike_upd  {Обработка.ВыгрузитьДанныеВБазуMSSQL.МодульОбъекта(1237)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft SQL Server Native Client 10.0): Transaction (Process ID 78) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Я понимаю, что это мертвая блокировка. Поскольку у меня мало опыта работы непосредственно с SQL из 1с пож-та объясните схематично, как правильно работать в данном конкретном примере, чтобы избежать блокировок при выполнении  данной процедуры
#1 by Вафель
какая-то самописная обработка?
#2 by DrZombi
Смотреть запросы надо... :)
#3 by Адинэснег
#4 by ksergey
>>какая-то самописная обработка? да, выливает в базу сайта в соот-щую таблицу данные по договорам, после загрузки данных выполняется запуск этой самой процедуры, насколько я понимаю она заполняет поле поиска номера договора >>Смотреть запросы надо запросы самые обычные: заполнение таблицы договоров идет через INSERT или UPDATE, и затем запуск процедуры но есть нюанс-данная обработка запускается через регламент из нескольких баз 1с, соот-но есть вероятность что время запуска может пересекаться (хотя данные договоров пересекаться не могут)
#5 by Вафель
как ты хочешь что бы тебе помогли с какой то самописной  обработкой? Сколько готов платить за решение?
#6 by Йохохо
уменьшить количество элементов в транзакции
#7 by МихаилМ
перепешите хранимую процедуру или запускайте её отдельно с проверкой что уже не запущена и ожиданием , когда отработает.
#8 by ksergey
>>уменьшить количество элементов в транзакции в алгоритме не устанавливается явных транзакций, просто последовательно выполняется загрузка дынных(длится примерно 1-2мин) и далее запуск процедуры поможет ли, если например запуск процедуры выполнить через установку явной транзакции ?
#9 by ksergey
>>как ты хочешь что бы тебе помогли с какой то самописной  обработкой? мне нужна методологическая помощь-подсказать (более-менее детально) как решить эту проблему?
#10 by Йохохо
похоже Вы не можете управлять кодом после "далее запуск процедуры", значит можно попробовать разбить выгрузку из 1с на части и после каждой запустить хранимку
#11 by Вафель
сначала нужно собрать граф взаимоблокировки
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям