AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2009, 13:09   #21  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Сейчас вот опять разбирались с ошибками insert_recordset.

Касательно DAX4.0 SP2 (SQL 2005 SP3).

Вставка из одной невременной таблицы в другую. Если есть группировка, то аксапта выдает ошибку SQL при включенном трейсинге запросов SQL (Параметры пользователя / SQL / SQL-Trace). Если его выключить, то все работает.

Это на первый взгляд, если будет время подготовлю более подробно описание.
Старый 05.05.2009, 12:02   #22  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от petr Посмотреть сообщение
Сейчас вот опять разбирались с ошибками insert_recordset.

Касательно DAX4.0 SP2 (SQL 2005 SP3).

Вставка из одной невременной таблицы в другую. Если есть группировка, то аксапта выдает ошибку SQL при включенном трейсинге запросов SQL (Параметры пользователя / SQL / SQL-Trace). Если его выключить, то все работает.

Это на первый взгляд, если будет время подготовлю более подробно описание.
Хмм. В лоб не получилось воспроизвести на последней версии.
Возможно что-то забыли?

Генерируется такой запрос:
X++:
SQL statement: (Table1) SELECT A.ITEMID AS f1,N'mul' AS DATAAREAID,1 AS RECVERSION,IDENTITY(bigint,1,1) AS RECID INTO [#ax_tmp_mul3_52_0]  FROM INVENTTABLE A WHERE (DATAAREAID=N'mul') GROUP BY A.ITEMID ORDER BY A.ITEMID [ID=608, Reused=No]
Вот такой код:
X++:
static void Job1(Args _args)
{
    Table1 table1;
    Inventtable inventTable;
    ;
    delete_from table1;

    insert_recordset table1 (ItemId)
    select ItemId from inventTable
        group by ItemId;
}
Старый 05.05.2009, 12:17   #23  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
У меня сегодня на стандартной инсталяции у нас тоже не получилось воспроизвести. Хотя на инсталяции клиента ошибка выпадает. Видимо это еще от каких то настроек клиента / АОСа / БД зависит. Когда мы тут разберемся - я выложу результаты.
Старый 06.05.2009, 15:12   #24  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Доброго времени, суток!

Цитата:
Сообщение от kashperuk Посмотреть сообщение
Хмм. В лоб не получилось воспроизвести на последней версии.
Возможно что-то забыли?

Генерируется такой запрос:
X++:
SQL statement: (Table1) SELECT A.ITEMID AS f1,N'mul' AS DATAAREAID,1 AS RECVERSION,IDENTITY(bigint,1,1) AS RECID INTO [#ax_tmp_mul3_52_0]  FROM INVENTTABLE A WHERE (DATAAREAID=N'mul') GROUP BY A.ITEMID ORDER BY A.ITEMID [ID=608, Reused=No]
Вот такой код:
X++:
static void Job1(Args _args)
{
    Table1 table1;
    Inventtable inventTable;
    ;
    delete_from table1;
 
    insert_recordset table1 (ItemId)
    select ItemId from inventTable
        group by ItemId;
}
При стандартных настройках действительно ничего не наблюдается(по крайней мере у меня не получилось), однако после небольших изысканий имеем следующую картину :

Параметры пользователя\SQL\SQL Trace - установлена
Параметры пользователя\SQL\Query Plan должна стоять обязательно!!!
И установлен вывод запросов например в инфолог(Параметры пользователя\Multiply SQL Statements\Infolog)

Настройки АОСа:
1. Галка "Allow client tracing on Application Object Server instance" должна быть установлена.

После установки данных параметров и запуска Job1, на ниже приведенныx приложенияx

AX 4.0 Kernel version : 4.0.1633.10.0 Application version 4.0.1633.11
SQL 2005 Version 9.00.2047.00

AX 4.0 SP 2 EE Kernel version : 4.0.2501.116 Application version 4.0.2501.347
SQL 2005

возникает следующая ошибка

X++:
SQL Statement : /*SP*/ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; INSERT INTO T1 (ITEMID,DATAAREAID,RECVERSION,RECID)SELECT F1,DATAAREAID,RECVERSION,RECID+5637148658 FROM #axapta_tmp_dmo53
Возможно данная проблема наблюдается и в AX 2009.

P.S. С галкой Параметры пользователя\SQL\Query Plan сталкиваюсь не первый раз, есть еще один баг с ней связанный(возможно наблюдается при включенной галке трассировки на АОСе)(AX 3.0 SP2 + Oracle 9),
суть в следующем : есть таблица, в ней есть поле типа Container, так вот если производить в ставку в эту таблицу, то при включенном мониторинге запросов и галке "План запроса"
возникает следующая ошибка : ORA-00932: inconsistent datatypes: expected NUMBER got BLOB, если галка "План запроса выключена", то все ок
Во вложении проект, который воспроизводит данную ошибку(после импорта, нужно установить галки и запустить job)
Вложения
Тип файла: xpo ORA_932_TEST.xpo (3.5 Кб, 132 просмотров)
За это сообщение автора поблагодарили: petr (3).
Старый 06.05.2009, 17:57   #25  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от SRF Посмотреть сообщение
Параметры пользователя\SQL\Query Plan должна стоять обязательно!!!
Проверил оба сценария, нет ошибки...
АХ последний билд, SQL Server 2005, Win 2K3
Старый 07.05.2009, 06:50   #26  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Проверил оба сценария, нет ошибки...
АХ последний билд, SQL Server 2005, Win 2K3
Сегодня проверил на DAX 2009 SP1 ошибка повторилась.

Но вот что характерно, даже если возникает эта ошибка, вставка в таблицу table1 все равно происходит, поскольку insert_recordset отрабатывает на БД, а вот немного изменненный job уже не работает(т.е. записи в таблицу не вставляет)

X++:
static void Job1(Args _args)
{
    Table1 table1;
    Inventtable inventTable;
    ;
    ttsbegin;//SRF
 
    delete_from table1;
    insert_recordset table1 (ItemId)
    select ItemId from inventTable
        group by ItemId;
 
    ttscommit; //SRF
}
Тестирование для DAX 4.0 было на Win 2K3 EE SP1 Build 3790, для DAX 2009 Win 2K3 EE SP1 Build 3309

Параметры пользователя, АОСа, и скриншот ошибки для DAX 4.0 во вложении.

Если ошибка опять не воспроизведется, рискну предположить, что она исправлена в последнем билде.

P.S. В InventTable должны быть записи.
UPD: Насчет ошибки ORA_932 - наблюдал ее на Oracle, на SQL с ней не сталкивался, думаю она там не проявляется.
Вложения
Тип файла: zip parameters_bug.zip (290.8 Кб, 78 просмотров)

Последний раз редактировалось SRF; 07.05.2009 в 06:52. Причина: Дополнение по ORA_932
За это сообщение автора поблагодарили: kashperuk (7).
Теги
insert_recordset, recordset, ax3.0, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по модулю Расчеты с персоналом. Выплата заработной платы. Keks DAX: Функционал 7 28.12.2009 10:31
Вопрос по созданию отчета asd1274 DAX: Программирование 6 05.12.2008 21:44
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:37.