|   |   | 
| 
 | Ошибка 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) сначала нужно собрать граф взаимоблокировки     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |