AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 06.02.2012, 14:20   #1  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Падает клиент при прикреплении файла
DAX 2009 SP1 5.0.1500.1313, SQL Server 2005 SP3. При сохранении записи с вложением превышающим по размеру 4 с чем-то метра падет клиент. Меньшие файлы благополучно сохраняет. Ошибка идентичная этой Пробовал и MaxBufferSize в реестр для АОСа и клиента пихать и на сиквеле с параметрами игрался, ничего не помогает. Есть ещё какие-нибудь варианты?
__________________
Самое полезное в жизни – это собственный опыт...

Last edited by Ashir; 06.02.2012 at 14:26.
Old 06.02.2012, 15:41   #2  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
И что интересно, в логах никаких сообщений не возникает.
При этом скрипт
X++:
INSERT INTO myTable(FileName, Document) 
   SELECT 'File1.pdf' AS FileName, 
      * FROM OPENROWSET(BULK N'C:\Text.pdf', SINGLE_BLOB) AS Document;
отрабатывает на ура и закидывает в базу любые файлы. Проблема явно во взаимодействии Аксы с сиквелом. Куда ещё посмотреть...
__________________
Самое полезное в жизни – это собственный опыт...
Old 06.02.2012, 15:59   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Прикрепляемый файл берется с локального диска или с сетевого?
Old 06.02.2012, 16:45   #4  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Файл берётся с локального диска. Клиент запускается на сервере там же где стоит АОС и Сиквел, права админские...
__________________
Самое полезное в жизни – это собственный опыт...
Old 07.02.2012, 01:31   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
- откройте конфигурационный файл клиента блокнотом
- добавьте в конце строку: maxbuffersize, text,0
- сохраните файл и запустите клиент, используя этот конфигурационный файл.

Взято отсюда.
Падает клиент при прикреплении документа

Если не помогло, значит что-то неверное сделали.
Old 07.02.2012, 09:05   #6  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Quote:
Originally Posted by DSPIC View Post
- откройте конфигурационный файл клиента блокнотом
- добавьте в конце строку: maxbuffersize, text,0
- сохраните файл и запустите клиент, используя этот конфигурационный файл.
Если не помогло, значит что-то неверное сделали.
Это я уже делал. И для АОСа в реестр добавлял maxbuffersize и DWORDом и текстом.
В разные места реестра пробовал
[HKLM\SYSTEM\CurrentControlSet\Services\Dynamics Server\5.0]
[HKLM\SYSTEM\CurrentControlSet\Services\Dynamics Server\5.0\01]
[HKLM\SYSTEM\CurrentControlSet\Services\Dynamics Server\5.0\01\DAX50]
Бесполезно.

Кстати, maxbuffersize в реестре обнаружился только тут [HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 2.x], тип DWORD, десятичное значение 512.
__________________
Самое полезное в жизни – это собственный опыт...
Old 07.02.2012, 09:21   #7  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Так все-таки, если клиент и файл находятся на одной и той же машине - проблема остается ?
Ну, и я бы еще один эксперимент провел - разместил бы файл на AOS и попробовал бы загрузить.
Не очень понял этот момент из вашего ответа.
Old 07.02.2012, 09:22   #8  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Проблема однозначно остаётся.
__________________
Самое полезное в жизни – это собственный опыт...
Old 07.02.2012, 09:25   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Join Date: 03.12.2001
Тогда - не знаю. У нас была похожая проблема, когда файл загружали с сетевой шары и при этом клиент работал на 64-ти разрядном сервере. Именно при сочетании этих двух факторов мы получали аналогичную ошибку.

Решили предварительным копированием файла на машину клиента и последующей загрузкой.
Old 07.02.2012, 09:29   #10  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Хм. У нас стоит Windows Server 2003 R2 Standard x64 Edition SP2, может с этим есть связь.
__________________
Самое полезное в жизни – это собственный опыт...
Old 07.02.2012, 13:38   #11  
KiselevSA is offline
KiselevSA
Злыдни
KiselevSA's Avatar
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Join Date: 25.01.2002
Location: Москва
А размер буфера RPC (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc, ключ MaxRpcSize (DWORD) значение 30000000 (30 Mb)) установили? Не забудьте, что параметры для текстового буфера применяются только после рестарта AOS
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
This post has been rated by: Ashir (1).
Old 07.02.2012, 16:59   #12  
someOne is offline
someOne
Участник
someOne's Avatar
 
174 / 432 (15) +++++++
Join Date: 11.12.2008
Location: Москва
Quote:
Originally Posted by Ashir View Post
Проблема явно во взаимодействии Аксы с сиквелом. Куда ещё посмотреть...
Предположу что проблема в том, что Аксапта имеет ограничение на размер контейнера при передаче его с клиента (приложения Аксапты ax32.exe) на сервер (службу АОС) так как он передается по значению, а не по ссылке.

А файл, с клиента на сервер (для его последующей записи в БД в вашем случае) передается в виде контейнера.

Можно конечно попытаться изменить стандартные размеры RPC пакета для сервера, изменяя значения реестра... (как советовали выше, ранее обсуждалось на форуме...)

Но есть альтернатива - передавать файл не одним общим контейнером, а делить его на части, передавать последовательно, и на стороне АОС "собирать" его вновь в одно целое.

Для этих целей сделал два класса, которые позволяют передавать файлы любого размера средствами Аксапта (клиента и АОС) с клиента на сервер, и обратно.

Процедура работает уже больше года, проблем в работе не вызывает.
(Даже при передаче файла размером несколько GB ощутимого замедления скорости работы сервера АОС не замечено)

Есть только одна странность - если в течении рабочей сессии на клиенте Аксапта использовалась данная процедура, то при закрытии этого клиента Аксапта, в некоторых случаях выдается сообщение об ошибке windows...

Классы написаны для Ax2009.

Пример использования:
X++:
DEV_FileSender::copyToServer("c:\\file.avi", "c:\\fileServer.avi");
Процедура написана для передачи "больших" файлов, но может быть использована и для передачи "больших" контейнеров что можно применить в вашем случае, наверное.

(Заменить участки кода при сохранении итоговых данных)
X++:
binData.saveFile(_fileName);
на
X++:
serverContainer = binData.getData();
В общем выкладываю классы, возможно кому то пригодится функция передачи крупных файлов средствами Аксапта, или как идея решения проблемы в вашем случае.

P.S Файлы докуметооборота Аксапты мы в БД не храним, а передаем (получаем) их с клиента Аксапта на файловый сервер именно этой процедурой.
Attached Files
File Type: xpo PrivateProject_Dev_fileSender.xpo (7.8 KB, 402 views)
This post has been rated by: sukhanchik (10), Logger (10), b_nosoff (1), Ashir (1), ivas (2).
Old 07.02.2012, 17:09   #13  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
KiselevSA Да! Помогло, но как-то странно. Файлы до 10 с небольшим мегов сохраняет, а больше нехочет, говоря при этом "Размер распаковываемого контейнера превышает MaxBufferSize. При попытке вставить запись, содержащую контейнер, произойдёт сбой."
У меня MaxBufferSize имеет тит DWORD и значение 0 в ветках реестра относящихся к АОСу (указывал ранее), в файле конфигурации maxbuffersize,text,0 как писал DSPIC. Завтра поковыряю дальше...
__________________
Самое полезное в жизни – это собственный опыт...
Old 08.02.2012, 11:07   #14  
Ashir is offline
Ashir
Участник
 
45 / 22 (1) +++
Join Date: 27.10.2005
Вообщем подчистил свои мытарства в реестре, и сделал всё заново, а именно добавил 2 ключа в реестр

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc] "MaxRpcSize"
тип DWORD десятичное значение 30000000
и
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dynamics Server\5.0\01\DAX50] "MaxBufferSize"
тип REG_SZ значение 0 (до этого стоял DWORD, тестил блин)

В итоге всё заработало. Файлы до 30 метров грузятся в базу. При этом для клиента никаких доп параметров MaxBufferSize нет ни в реестре ни в файле конфигурации. Место запуска клиента тоже не имеет значения, запускается ли он с сервера где стоит АОС либо с любой другой машины - не важно.
__________________
Самое полезное в жизни – это собственный опыт...
This post has been rated by: Logger (5), Ivanhoe (3), alex55 (1).
Old 31.01.2013, 19:36   #15  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Итоговый вариант помог, спасибо.
__________________
Ivanhoe as is..
Old 31.01.2013, 19:41   #16  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Join Date: 28.11.2005
Location: Москва
Blog Entries: 3
Quote:
Originally Posted by Ashir View Post
Пробовал и MaxBufferSize в реестр для АОСа и клиента пихать и на сиквеле с параметрами игрался, ничего не помогает.
А на клиенте игрались как? На клиенте этот параметр надо прописать в конфигурацию, которую клиент использует для запуска, соотв., она может быть как в реестре (причем не одна), так и в файле. В последнем случае параметр MaxBufferSize надо добавить в конфигурационный файл.
Old 05.06.2013, 08:37   #17  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Join Date: 22.11.2007
А после сохранения больших файлов, потом из таблицы записи выбираются? У меня выпадает ошибка

Невозможно выбрать запись в BinDataTable (BinDataTable).
Из базы данных выбрано нулевое значение (NULL), которое не поддерживается.

От такой ошибки помогло: maxbuffersize, text,0

Last edited by Kainix; 05.06.2013 at 08:56.
Old 23.06.2014, 12:04   #18  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
Quote:
Originally Posted by DSPIC View Post
- откройте конфигурационный файл клиента блокнотом
- добавьте в конце строку: maxbuffersize, text,0
Можно ли при запуске аксапты программно узнать значение параметра maxbuffersize ? Чтобы в случае когда аксапта запускается без явного указания этого параметра в конфигурационном файле - выдавать какую-нибудь ошибку.
__________________
Дмитрий
Old 23.06.2014, 12:47   #19  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Join Date: 28.11.2005
Location: Москва
Blog Entries: 3
Открытых API для этого, насколько я знаю, нет. Можно анализировать параметры запуска клиента, выуживать оттуда путь к конфигурационному файлу и парсить его, либо лезть в реестр, если клиент запущен без конфигурационного файла.
Old 23.06.2014, 12:50   #20  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Join Date: 28.05.2003
Location: в глуши
Как программно узнать запущена аксапта с конфигурационным файлом в ярлыке или без него ?
__________________
Дмитрий
Tags
maxbuffersize, документооборот, загрузка, размер, файл

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Падает клиент при прикреплении документа Stella DAX: Администрирование 27 21.04.2021 16:58
Клиент падает при попытке сравнить таблицу во время импорта vanokh DAX: Программирование 19 09.09.2015 11:49
Падает клиент Аксапты, при вставке текста из буфера обмена vc DAX: Администрирование 11 04.09.2009 11:46
Падает клиент Аксапты... glibs DAX: Программирование 7 09.06.2009 19:32
Падает акспата(клиент). bucken DAX: Функционал 14 02.10.2003 14:22
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 15:40.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.