|
Конфликт блокировок при обмене. | ☑ | ||
---|---|---|---|---|
0
DreamMaster
06.11.12
✎
06:39
|
Обмены между филиалами запускаются каждый час (по-этому пакеты, которые летают при обмене не сильно большие). При выполнении обмена у многих пользователей, при сохранении документов, вылетает такая ошибка:
Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {ОбщийМодуль.гбДоработки(13822)}: Ошибка при вызове метода контекста (Выполнить) по причине: Ошибка выполнения запроса по причине: Конфликт блокировок при выполнении транзакции: Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded. HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10, native=1222, line=1 как можно решить данную проблему? |
|||
1
France
06.11.12
✎
06:41
|
народу много в базе??
а так, уменьшить количество объектов, загружаемых в рамках одного обмена.. |
|||
2
DreamMaster
06.11.12
✎
06:45
|
Других способов нет? Уже максимально уменьшили кол-во объектов в пакете.
|
|||
3
France
06.11.12
✎
06:46
|
загрузку делать не в транзакции... и мирится в таком случае с последствиями..
|
|||
4
DreamMaster
06.11.12
✎
06:53
|
Ок, спасибо за помощь!
|
|||
5
luns
06.11.12
✎
07:06
|
(0) дело не в размере файла обмена.
судя по описанию не выставлено КоличествоЭлементовВТранзакции поставь например 100 и будет счастье. |
|||
6
France
06.11.12
✎
07:10
|
если вдуматься, смысла в транзакции 100 элементов из тыщи нет - это равносильно полной отсутствии обмена в транзакции..
|
|||
7
France
06.11.12
✎
07:46
|
чо, никто не хочет вдуматься и устроить холивар?))
|
|||
8
DreamMaster
06.11.12
✎
07:50
|
На эту тему нашел интересную статью: http://pro1c.org.ua/index.php?showtopic=154
|
|||
9
France
06.11.12
✎
07:57
|
так, статья тоже такая, что если вдуматься, смысла в "порционной" транзакции нет... никакого..
|
|||
10
Галахад
гуру
06.11.12
✎
08:04
|
(6) Ну если в обмене есть документы с большими табличными частями? И их несколько?
|
|||
11
France
06.11.12
✎
08:05
|
(10) и?? документ проводится то в любом случае в транзакции..
|
|||
12
Рэйв
06.11.12
✎
08:06
|
(9)Что, не разжигается?:-)
|
|||
13
Галахад
гуру
06.11.12
✎
08:13
|
(11) Ну есть разница одна транзакция на 5 минут или 100 по 3 секунды.
|
|||
14
France
06.11.12
✎
08:14
|
(12) да, чой то тяжко идет))
(13) не совсем понял мысль про одну в 5 минут и 100 по 3 секунды.. |
|||
15
Галахад
гуру
06.11.12
✎
08:16
|
В пакете 100 документов.
Пример 1: КоличествоЭлементовВТранзакции = 100 Пример 2: КоличествоЭлементовВТранзакции = 1 |
|||
16
France
06.11.12
✎
08:54
|
(15) если мой исходный посыл взять, то правильнее одна транзакция в 5 минут, чем 100 по 3 секунды... т.е, либо все делай в одной транзакции, либо вообще не используй... а всякие транзакции по 1000 элементов - это работа проктолога с гландами из ему привычного места))
|
|||
17
Живой Ископаемый
06.11.12
✎
08:57
|
2(16) к счастью это не становится правдой только от того, что кто-то так думает.
|
|||
18
France
06.11.12
✎
08:58
|
(17) и что же "это" не становится правдой?? посыл, что либо одна транзакция, либо вообще ни одной??
|
|||
19
France
06.11.12
✎
09:17
|
Ископаемый смылся чтоле?
|
|||
20
DreamMaster
06.11.12
✎
10:25
|
А вообще есть ли смысл разбивать на несколько транзакций? Ведь, если я не ошибаюсь, блокируется вся таблица документов, а не только те документы, которые входят в обмен.
|
|||
21
France
06.11.12
✎
14:49
|
да, я тож делаю вброс: народ чот неактивно реагирует.. похоже, интоксикация после трех дней отдыха мешает..
|
|||
22
France
06.11.12
✎
21:44
|
?
|
|||
23
Zolotko
06.11.12
✎
23:16
|
(0)знакомая ситуация.
У меня так же при обменах сваливалось с такой же ошибкой. Нашла несколько причин: 1. Есть навороченная консоль запросов, она у нас постоянно блокировала все регистры, все документы. Смотрели по мониторингу на SQL,либо закрывали консоль запросов, если не помогало удаляли сеанс на SQL. 2. Одновременно к базе подключалось около 300 ws-обменов и они блокировали друг друга. Удаляли сеанс, блокирующий базу, если не помогало, то удаляли все сеансы обмена, если и это не спасало, то перезагружали сервер приложений, а если совсем все было худо, то SQL сервер. 3. Неправильно написанные запросы: как-то раз показала своим программистам, что в запросе можно сделать блокировку данных для изменения, лучше бы не показывала. Во всех мыслимых и не мыслимых запросах нашла ошибки, даже если было просто запрос: выбрать все из какой-нибудь таблицы - пришлось переписывать запросы. 4. Чаще всего такие ситуации возникают, когда в базе закрытие периода, т.к. одновременно активных подключений до 500 и всем бухгалтерам необходимо сформировать оборотки обязательно за весь период какой только доступен в базе - тут очень хорошо помогает "газета по ушам" 5. Чаще всего такие ошибки отлавливались на неправильном коде, вернее на неправильном употреблении Транзакции, т.е. транзакция открывалась, но нигде не закрывалась, тем самым блокируя объект. Хуже всего то, что иногда это написано в самих правилах конвертации и не сразу можно догадаться, что программист "накосячил". Вроде бы все, если еще что-то вспомню - допишу |
|||
24
МихаилМ
07.11.12
✎
09:52
|
(23)
транзакция сама ничего не блокирует. она определяет вроемя блокировки. |
|||
25
Zolotko
07.11.12
✎
10:02
|
(24) когда одновременно больше сотни баз подключаются для обмена, то ошибки как раз возникали в открытых транзакциях, которые забывали зафиксировать. А в худшем случае, если около 2000-2500 баз решили пакеты отправить, то падает сама база, к которой они подсоединились
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |