Имя: Пароль:
1C
 
Ошибки sql
0 kskbmax
 
13.06.06
09:48
HRESULT=80004005, SQLSTATE=40001, native=1205

Не удалось записать документ Поступление от поставщиков в аптеки 000000175025 от 17.05.2006 0:00:00 по причине {Документ.СчетПоставщика(764)}: Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Transaction (Process ID 60) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
HRESULT=80004005, SQLSTATE=40001, native=1205
1 ТелепатБот
 
гуру
13.06.06
09:48
2 чувак
 
13.06.06
09:50
Блокирует кто то
3 Advan
 
13.06.06
10:01
(0)Ну и подробности выкладывай, что делал?, когда ошибка выскакивает?
4 avmlvm
 
13.06.06
10:02
(0) Это ошибка не сиквела, а оле диби провайдера...

как вариант.. У какого-то юзеря была данный документ "захвачен"
5 Дяпти
 
13.06.06
10:04
это ошибка разработчика
6 Advan
 
13.06.06
10:08
(4)8-ка обычно пишет кто блокирует...
7 Херрес
 
13.06.06
10:09
Разработчик не должен отвечать за дедлоки. По крайней мере разработчик на 1С.
Это ошибка сервера... вернее не ошибка, а фича.
Время от времени, при некоторой предельной нагрузке будут возникать дедлоки.
И сервер при этом случайно (или не очень случайно) выбирает себе жертву и грохает её.
Бороться с этим не надо.
8 Дяпти
 
13.06.06
10:12
(7) ты ошибаешься. бороться с этим надо, правда программисту 1С для этого придется весьма серьезно изучить SQL сервер. И нагрузка тут вообще не причем. Имеет значение лишь способ и порядок обращения к таблицам в конкурирующих транзакциях.
9 Херрес
 
13.06.06
10:21
(8) Ну и как на этот порядок может повлиять разработчик 1С ?
Разьве что организационно. Сказать: с утра до обеда работает отдел закупки, после обеда и до заката - розница.

На счёт того, что нагрузка не влияет на вероятность возникновения дедлока...
Довольно спорно...
10 Дяпти
 
13.06.06
10:35
(9) Если есть интерес, почитай, что такое дедлоки и откуда они берутся.
Нагрузка влияет лишь на вероятность того, что 2 процесса передерутся за одни и теже ресурсы. Сей факт при неправильном написании кода приводит к дедлокам.
Если нет желания лезть в блокировки рекомендую придерживаться нескольких правил:
1. В обработках проведения всех документов придерживаться одного порядка обращения к таблицам регистров, то есть например, во всех документах сначала надо писать в ОстаткиТоваров, а потом в ПартииТоваров, или во всех же наоборот.
2. Если в обработке проведения сначала получаются остатки по регистрам, а потом эти остатки в обработке проведения изменяются - то остатки получаем запросом с изпользованием ДЛЯ ИЗМЕНЕНИЯ.
3. Настоятельно не рекомендую пользоваться открывшейся в 8-ке возможностью проводить один документ из обработки проведения другого.
2 + 2 = 3.9999999999999999999999999999999...