|
Ошибка MSSQL - Transaction was deadlocked | ☑ | ||
---|---|---|---|---|
0
ksergey
04.04.17
✎
10:45
|
Добрый день.
Есть база 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
Вафель
04.04.17
✎
10:46
|
какая-то самописная обработка?
|
|||
2
DrZombi
гуру
04.04.17
✎
10:46
|
(0) Смотреть запросы надо... :)
|
|||
3
Адинэснег
04.04.17
✎
10:49
|
||||
4
ksergey
04.04.17
✎
11:01
|
>>какая-то самописная обработка?
да, выливает в базу сайта в соот-щую таблицу данные по договорам, после загрузки данных выполняется запуск этой самой процедуры, насколько я понимаю она заполняет поле поиска номера договора >>Смотреть запросы надо запросы самые обычные: заполнение таблицы договоров идет через INSERT или UPDATE, и затем запуск процедуры но есть нюанс-данная обработка запускается через регламент из нескольких баз 1с, соот-но есть вероятность что время запуска может пересекаться (хотя данные договоров пересекаться не могут) |
|||
5
Вафель
04.04.17
✎
11:03
|
(4) как ты хочешь что бы тебе помогли с какой то самописной обработкой?
Сколько готов платить за решение? |
|||
6
Йохохо
04.04.17
✎
11:12
|
(0) уменьшить количество элементов в транзакции
|
|||
7
МихаилМ
04.04.17
✎
11:22
|
перепешите хранимую процедуру или запускайте её отдельно
с проверкой что уже не запущена и ожиданием , когда отработает. |
|||
8
ksergey
04.04.17
✎
11:23
|
>>уменьшить количество элементов в транзакции
в алгоритме не устанавливается явных транзакций, просто последовательно выполняется загрузка дынных(длится примерно 1-2мин) и далее запуск процедуры поможет ли, если например запуск процедуры выполнить через установку явной транзакции ? |
|||
9
ksergey
04.04.17
✎
11:43
|
>>как ты хочешь что бы тебе помогли с какой то самописной обработкой?
мне нужна методологическая помощь-подсказать (более-менее детально) как решить эту проблему? |
|||
10
Йохохо
04.04.17
✎
11:43
|
(8) похоже Вы не можете управлять кодом после "далее запуск процедуры", значит можно попробовать разбить выгрузку из 1с на части и после каждой запустить хранимку
|
|||
11
Вафель
04.04.17
✎
11:44
|
(9) сначала нужно собрать граф взаимоблокировки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |