Имя: Пароль:
1C
1С v8
ошибка СУБД при загрузки xml файла
0 zippygrill
 
27.05.19
10:25
Всем привет!
xml файл загружается фоновым заданием и выдает ошибку. Если же загрузить его через УОД то все норм.
В файле двоичные данные не присутствуют, его размер 700кб, в настройках sql не лазили (со слов админа) :)
Перегрузить скуль рано

Ошибка СУБД:
Microsoft SQL Server Native Client 10.0: Attempting to grow LOB beyond maximum allowed size of 2147483647 bytes.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=1, Severity=10, native=7119, line=1
1 zippygrill
 
27.05.19
10:26
файл прекрасно открывается в редакторе и IE
2 ДенисЧ
 
27.05.19
10:30
SQL Express?
3 zippygrill
 
27.05.19
10:31
Вряд ли
4 zippygrill
 
27.05.19
10:32
(2) точно нет
5 zippygrill
 
27.05.19
10:33
Пока я отдыхал в отпуске, действительно пытались грузить xml файл ~3 гб, может в кэше скуля осталось что-то..
6 zippygrill
 
27.05.19
11:26
апну
7 zippygrill
 
28.05.19
15:05
лечилось перегрузкой скуля
8 zippygrill
 
29.05.19
17:03
и снова врасплох застала эта ошибка.
загружаю xml файл размером 1 гб. В нем есть двоичные данные.

Если фоновым заданием загружаю данные то получаю сначала ошибку
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(11605)}: Ошибка при вызове метода контекста (Прочитать)
    ФайлОбмена.Прочитать();
по причине:
Ошибка разбора XML:  - [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: file:////srv-s1cm1/ERP_SYNC/UPP_ERPPM/MessageUPP_ERP.xml

Если же непосредственно вручную, через УОД - то уже sql говорит - Ошибка СУБД:
Microsoft SQL Server Native Client 10.0: Attempting to grow LOB beyond maximum allowed size of 2147483647 bytes.


Возможно поэтому и скуль не разрешает

На маленькие файлы - ситуация не повторяется..
9 lodger
 
29.05.19
17:11
(8) а скуль говорит что ты в него суешь объект свыше 2 гигов?
10 zippygrill
 
29.05.19
17:17
(0) ага
11 Сияющий в темноте
 
29.05.19
18:42
Extra контент,это нарушение формата,возможно,что умный парсер смело читает за пределами конца файла,что то там ожидая,вот и переполнение.
12 zippygrill
 
30.05.19
11:00
Что удалось выяснить.
Скопировал оригинальный xml который выдает Ошибка разбора XML:  - [1,1], менял кодировку "UTF-8 c BOM" на просто "UTF-8" и файл загрузился без ошибок в фоне.

http://prntscr.com/nva93u
13 zippygrill
 
30.05.19
11:37
помимо этого файла обмена на том же файловом ресурсе есть и другие файлы обмена в т.ч. и через УниверсальныйФормат и в них кодировка тоже utf-8 с BOM и они прекрасно загружаются в приемнике

апну тему.
14 zippygrill
 
30.05.19
12:52
Эксперимент
Файл лежит по прежнему на сетевом диске

Если выполнить ЧтениеXML на клиенте то все ок
Если на сервере то спотыкается  ФайлОбмена.Прочитать() - почему так..


&НаСервере
Процедура ЧитатьНаСервере()
    ФайлОбмена = Новый ЧтениеXML();
    
    Попытка
        ФайлОбмена.ОткрытьФайл(ИмяФайлаЗагрузкиДанных);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    ФайлОбмена.Прочитать();
КонецПроцедуры
15 zippygrill
 
30.05.19
13:46
Вот, самое поганое что если менять имя файла, то файл Прочитается, в противном - выдает Fatal error
https://yadi.sk/i/3BZOt2Ci0L8inw

У кого какие мысли?
16 zippygrill
 
30.05.19
16:45
апну
17 lodger
 
30.05.19
17:56
(15) у профиля пользователя сервера1с что-то с языками\кодировками?
18 zippygrill
 
30.05.19
22:37
сомневаюсь, но перепроверю
19 zippygrill
 
31.05.19
13:17
+(15) Возможно причина в формировании данного файла, но выгрузка происходит по всем уже давно известному алгоритму фоновым заданием. Т.е. в ОбъектОБработки.ВыполнитьВыгрузку() уже не вклинишься и тут особо и нечего менять.

        ОбъектОБработки = Обработки.УниверсальныйОбменДаннымиXML.Создать();
        ОбъектОБработки.ИмяФайлаПравилОбмена   =  "\\srv-s1cm1\ERP_SYNC\UPP_ERPPM\UPP_ERP_PM_Rules.xml";
        ОбъектОБработки.ЗагрузитьПравилаОбмена();
        ОбъектОБработки.ИмяФайлаОбмена = ИмяФайлаВыгрузки;
        УстановитьУзелОбменаУСтрокДерева(ОбъектОБработки.ТаблицаПравилВыгрузки.Строки, ВыборкаДетальныеЗаписи.Ссылка);
        ОбъектОБработки.ВыполнитьВыгрузку();
        Если Не ОбъектОбработки.ФлагОшибки Тогда
            ОбъектОБработки.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки =  1;
            ПланыОбмена.УдалитьРегистрациюИзменений(ВыборкаДетальныеЗаписи.Ссылка);
        КонецЕсли;
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший