|
![]() |
#1 |
Участник
|
Пока получается, что непосредственно в среде SQL имя индекса не хранится и его значение проще сконструировать самостоятельно
X++: /* Имя индекса в SQL Пример: I_007CustomerPaymentFeeLedgerDimensionI7 для таблицы BankAccountTable 1. "I_" - константа (буква i). Указывается у всех индексов 2. 007 - значение TableId, но не менее 3 знаков. Недостающая длина дополняется ведущими нулями. 3. CustomerPaymentFeeLedgerDimensionI - имя индекса в Axapta. Имя может быть обрезано с конца. См п.4 4. 7 - если общая длина из первых 3 частей превышает 40 символов, то в конец добавляется значение Id индекса как есть, а общая длина имени уменьшается до 40 символов за счет обрезания концевой части имени индекса в Axapta (п.3) */ select t2.AXID as tabId, t2.NAME as tableName, t1.AXID as indexId, t1.NAME as indexName, iif(len('I_' + format(t2.AXID, 'd3') + t1.NAME) <= 40 ,'I_' + format(t2.AXID, 'd3') + t1.NAME ,substring('I_' + format(t2.AXID, 'd3') + t1.NAME, 1, 40 - len(cast(t1.AXID as nvarchar(10)))) + cast(t1.AXID as nvarchar(10)) ) as indexNameSQL from SYSMODELELEMENT t1 join SYSMODELELEMENT t2 on t2.RecId = t1.PARENTMODELELEMENT and t2.ELEMENTTYPE = 44 where t1.ELEMENTTYPE = 43 and t2.Name = 'BankAccountTable' --and t1.Name = 'CustomerPaymentFeeLedgerDimensionIdx' order by t2.name, t1.Name
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Logger (3), trud (5), iCloud (2). |
Теги |
dax2012, index, sql |
|
|