Здравствуйте!
Имеем 2.5.12.102 на платформе 8.3.23.1782 (64 бит), MS SQL Server. По завершении этапа закрытия месяца "Распределение затрат и расчет себестоимости" в журнале регистрации появляется запись:
"ЗакрытиеМесяца.РасчетПартийИСебестоимости
При выполнении операции закрытия месяца "Распределение затрат и расчет себестоимости" произошла ошибка:
Аварийно завершился рабочий процесс фонового задания".
При этом процесс закрытия продолжается (по его окончании в разделе "Распределение затрат и расчет себестоимости" появляется строка "При выполнении расчета периода ... по организации ... произошла исключительная ситуация").
В технологическом журнале на момент ошибки примерно такие записи:
48:14.322022-0,EXCP,3,process=rphost,p:processName=erp1,OSThread=6760,t:clientID=3102,t:applicationName=BackgroundJob,t:computerName=server1c,t:connectID=659,DBMS=DBMSSQL,DataBase=serversubd\erp1,Exception=dc31263e-ecbf-41bd-9b3a-7b55897d5fd6,Descr='src\backend\src\DataBase2.cpp(3671):
dc31263e-ecbf-41bd-9b3a-7b55897d5fd6: Соединение с сервером баз данных разорвано администратором
Выполнение оператора KILL не привело к ошибке СУБД'
48:14.322030-0,EXCP,2,process=rphost,p:processName=erp1,OSThread=6760,t:clientID=3102,t:applicationName=BackgroundJob,t:computerName=server1c,t:connectID=659,Exception=dc31263e-ecbf-41bd-9b3a-7b55897d5fd6,Descr='src\rserver\src\ServerJobExecutor.cpp(1335):
dc31263e-ecbf-41bd-9b3a-7b55897d5fd6: Соединение с сервером баз данных разорвано администратором
Выполнение оператора KILL не привело к ошибке СУБД'
48:14.322032-9922006,CONN,0,process=rphost,OSThread=6760,t:clientID=3102,t:clientID=3102,t:computerName=server1c,t:applicationName=BackgroundJob,t:connectID=659,Calls=402
48:16.806001-0,EXCP,6,process=rphost,p:processName=erp1,OSThread=2940,t:clientID=423,t:applicationName=BackgroundJob,t:computerName=server1c,t:connectID=265,SessionID=10,Usr=user1c,DBMS=DBMSSQL,DataBase=serversubd\erp1,dbpid=55,Exception=DataBaseException,Descr='Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Транзакция (идентификатор процесса 55) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=12, Severity=D, native=1205, line=1
',Context='
ОбщийМодуль.ЗакрытиеМесяцаСервер.Модуль : 3553 : Обработки.ОперацииЗакрытияМесяца.ВыполнитьРасчетЭтапов(ПараметрыЗапуска);
Обработка.ОперацииЗакрытияМесяца.МодульМенеджера : 2065 : ОбщегоНазначения.ВыполнитьМетодКонфигурации(
ОбщийМодуль.ОбщегоНазначения.Модуль : 5377 : Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
: 1 : РасчетСебестоимостиКорректировкаСтоимости.Выполнить_РасчетПартийИСебестоимости(Параметры[0])
ОбщийМодуль.РасчетСебестоимостиКорректировкаСтоимости.Модуль : 469 : РасчетСебестоимости.РассчитатьВсеВПопыткеИсключении(ПараметрыЗапуска);
ОбщийМодуль.РасчетСебестоимости.Модуль : 534 : РассчитатьВсе(ПараметрыЗапуска, ПараметрыРасчета, ПараметрыОтладки);
ОбщийМодуль.РасчетСебестоимости.Модуль : 413 : РасчетСебестоимостиПрикладныеАлгоритмы.ЗаписатьСформированныеДвижения(
ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль : 10838 : РасчетСебестоимостиЛокализация.ЗаписатьСформированныеДвижения(ПараметрыРасчета, ПротоколыРасчета);
ОбщийМодуль.РасчетСебестоимостиЛокализация.Модуль : 2344 : РасчетСебестоимостиНДС.СформироватьЗаданияДляМеханизмовУчетаНДСПартионныйУчет22(ПараметрыРасчета);
ОбщийМодуль.РасчетСебестоимостиНДС.Модуль : 23684 : РасчетСебестоимостиПрикладныеАлгоритмы.ОтразитьДокументыВУчете(ПараметрыРасчета, ПараметрыОтраженияВУчете);
ОбщийМодуль.РасчетСебестоимостиПрикладныеАлгоритмы.Модуль : 14981 : ОбщегоНазначения.ВыполнитьМетодКонфигурации(ПараметрыОтраженияВУчете.ИмяМетода, МассивПараметров);
ОбщийМодуль.ОбщегоНазначения.Модуль : 5377 : Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
: 1 : УчетНДСЛокализация.СформироватьЗаданияДляФормированияКнигиПокупокПродаж(Параметры[0])
ОбщийМодуль.УчетНДСЛокализация.Модуль : 5219 : РегистрыСведений.ЗаданияКФормированиюДвиженийПоНДС.СоздатьЗаписиРегистраПоДаннымВыборки(Запрос.Выполнить().Выбрать());
РегистрСведений.ЗаданияКФормированиюДвиженийПоНДС.МодульМенеджера : 96 : СоздатьЗаписьРегистра(СтруктураПолей.Месяц, СтруктураПолей.СчетФактура, СтруктураПолей.Организация, НомерЗадания);
РегистрСведений.ЗаданияКФормированиюДвиженийПоНДС.МодульМенеджера : 61 : НаборЗаписей.Записать(Истина);'
Перед закрытием серверы перезагружали, кэш чистили. На момент ошибки в базе, помимо пользователя, выполняющего закрытие, были ещё 2. Пробовали и в тонком, и в толстом клиенте - всё равно та же ситуация. Памяти на сервере 200 Гб - должно, вроде бы, хватать. Есть идеи, где копать?
Microsoft SQL Server Native Client 11.0: Транзакция (идентификатор процесса 55) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки
deadlock на sql server надо ловить. Память тут не причём.
(1) Было такое, когда ставили интервал перезапуска сервера (или как оно там называется в агенте сервера) отличное от нуля. Просто сервер пытается зависшие по его мнению процессы перекинуть на другие и в этот момент фоновые падают.
Попробуйте в настройках установить 0
SEL ECT A.Name AS InName,ob.Name AS DBName FR OM sys.indexes A
LEFT OUTER JOIN sys.objects ob ON ob.object_id = A.object_id
WHERE ALLOW_ROW_LOCKS = 0 AND ob.type = 'U'
Технологический журнал, мне кажется рановато вы начали копать. Посмотрите сначала протокол расчета партий и себестоимости. Я бы с него начал, Там много детальной информации.
(4) Я говорю про операцию "расчет себестоимости" в закрытии месяца. В панели закрытия месяца есть список протоколов расчета. В протокол вываливается всё и успешное и нет.