10.11.2015, 09:01 | #1 |
Участник
|
Разное количество индексов в axapta и sql
Добрый день.
Предыстория: Переносил процедуру с тестовой SQL на рабочую и при компиляции получил ошибку, что SQL не знает такого индекса. Думаю, ладно может новый индекс и его не перенесли на рабочею, но не тут-то было. Индекс коробочной аксапты и находиться на слое SYS. Через форму администрирования пересоздал этот индекс. Все стала хорошо и SQL принял процедуру как родную. Тут у меня появилась мысль, а сколько еще индексов не хватает в SQL. Сделал запрос в SQL: PHP код:
Хорошо, теперь нужно как-то понять, сколько индексов должно быть. Нашел в системных таблицах UtilIdElements и UtilElements. Вопрос к сообществу №1: В чем разница между UtilIdElements и UtilElement? Через обозреватель таблиц на первый взгляд информация одинаковая. X++: static void utilIdElementsCount(Args _args) { UtilIdElements utilIdElements; ; select count(RecId) from utilIdElements order by parentId where utilIdElements.recordType == UtilElementType::TableIndex; info(int2str(utilIdElements.RecId)); } Тут я совсем расстроился и что-то приуныл. В SQL не хватает 1/6 индексов. Далее мое извращенное сознание извергла следующий алгоритм: X++: static void getListIndexNameSql(Args _args) { UtilIdElements utilIdElements; DictTable dictTable; str textRow = 'Имя таблицы SQL;Имя таблицы;Имя индекса SQL;Имя индекса;Код таблицы;Код индекса\n'; ; while select utilIdElements order by parentId where utilIdElements.recordType == UtilElementType::TableIndex { if(tableId2Name(utilIdElements.parentId) != 'UNKNOWN') { dictTable = new DictTable(utilIdElements.parentId); textRow += strFmt('%1;%2;%3;%4;%5;%6\n', dictTable.name(DbBackend::Sql), dictTable.name(), dictTable.indexName(utilIdElements.id, DbBackend::SQL), utilIdElements.name, utilIdElements.parentId, utilIdElements.id); } } info(textRow); } P.S. AX2009, SQL 2008 |
|