04.05.2009, 13:09 | #21 |
Участник
|
Сейчас вот опять разбирались с ошибками insert_recordset.
Касательно DAX4.0 SP2 (SQL 2005 SP3). Вставка из одной невременной таблицы в другую. Если есть группировка, то аксапта выдает ошибку SQL при включенном трейсинге запросов SQL (Параметры пользователя / SQL / SQL-Trace). Если его выключить, то все работает. Это на первый взгляд, если будет время подготовлю более подробно описание. |
|
05.05.2009, 12:02 | #22 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
У меня сегодня на стандартной инсталяции у нас тоже не получилось воспроизвести. Хотя на инсталяции клиента ошибка выпадает. Видимо это еще от каких то настроек клиента / АОСа / БД зависит. Когда мы тут разберемся - я выложу результаты.
|
|
06.05.2009, 15:12 | #24 |
Участник
|
Доброго времени, суток!
Цитата:
Сообщение от 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 P.S. С галкой Параметры пользователя\SQL\Query Plan сталкиваюсь не первый раз, есть еще один баг с ней связанный(возможно наблюдается при включенной галке трассировки на АОСе)(AX 3.0 SP2 + Oracle 9), суть в следующем : есть таблица, в ней есть поле типа Container, так вот если производить в ставку в эту таблицу, то при включенном мониторинге запросов и галке "План запроса" возникает следующая ошибка : ORA-00932: inconsistent datatypes: expected NUMBER got BLOB, если галка "План запроса выключена", то все ок Во вложении проект, который воспроизводит данную ошибку(после импорта, нужно установить галки и запустить job) |
|
|
За это сообщение автора поблагодарили: petr (3). |
06.05.2009, 17:57 | #25 |
Участник
|
Проверил оба сценария, нет ошибки...
АХ последний билд, SQL Server 2005, Win 2K3 |
|
07.05.2009, 06:50 | #26 |
Участник
|
Цитата:
Но вот что характерно, даже если возникает эта ошибка, вставка в таблицу 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 во вложении. Если ошибка опять не воспроизведется, рискну предположить, что она исправлена в последнем билде. P.S. В InventTable должны быть записи. UPD: Насчет ошибки ORA_932 - наблюдал ее на Oracle, на SQL с ней не сталкивался, думаю она там не проявляется. Последний раз редактировалось SRF; 07.05.2009 в 06:52. Причина: Дополнение по ORA_932 |
|
|
За это сообщение автора поблагодарили: kashperuk (7). |