Этот пост не будет интересен опытным разработчикам. Целевая аудитория — новички.

Содержание

  1. Таблица (Table4Index) создается с нуля. 2
  2. Измените свойство SaveDataPerCompany с Yes на No. 3
  3. Добавлено поле ItemId. Индекс ItemIdx создан и настроен как кластерный индекс, но SurrogateKey остался в качестве первичного ключа. 4The ItemId field is added. The ItemIdx index is created and it’a setup as clustered index, but SurrogateKey remained as a Primary key. 4
  4. Сделайте индекс ItemIdx первичным индексом для таблицы Table4Index. 6
  5. Измените свойство SaveDataPerCompany с Нет на Да. 7
  6. Добавьте еще одно поле — CustAccount, создайте еще один индекс — CustAccountIdx (AlloowDuplicate = No, AlternativeKey = No), добавьте поле CustAccount в индекс CustAccountIdx. 8
  7. Сделаем CustAccountIdx (AllowDuplicate = Yes). 9
  8. Поле RecId добавляется в индекс CustAccountIdx. 10
  9. Измените свойство для индекса CustAccountIdx с (AllowDuplicate Yes на No). 11
  10. Отключите оба созданных индекса (ItemIdx и CustAccountIdx). 12

1. Таблица (Table4Index) создается с нуля

Мы создадим новую таблицу, и в самом начале в ней (очевидно) нет полей

Давайте проверим, что у нас есть в SQL:

  1. Системные поля созданы по умолчанию: DATAATREAID, PARTITION, RECID и RECVERCION.
  2. Один индекс (кластерный) также создается по умолчанию и состоит из поля RECID (см. Вывод скрипта ниже)
  3. Также есть несколько ограничений (которые присваивают значения по умолчанию, в зависимости от типа данных поля).

Итак, в самом начале создается единственный индекс (для поля RECID), и этот индекс кластеризуется.

2. Измените свойство SaveDataPerCompany с Да на Нет

В результате удаляется поле DATAAREAID (и соответствующее ограничение), но ничего больше.

3. Добавлено поле ItemId. Индекс ItemIdx создан и настроен как кластерный индекс, но SurrogateKey остался в качестве первичного ключа.

Запустив наш скрипт, мы видим, что создан еще один индекс (для поля ItemId) и фактически он состоит из двух полей: ItemId и Partition (если свойство таблицы SaveDataPerCompany остается Да, поле DataAreaId будет добавлено в индекс ItemIdx в SQL). Также мы видим, что RecId по-прежнему является первичным индексом (см. Столбец IsPrimary), а таблица Table4Index была перестроена в соответствии с новым кластеризованным индексом (см. Столбец IndexType).

4. Сделать индекс ItemIdx основным индексом для таблицы Table4Index

5. Измените свойство SaveDataPerCompany с Нет на Да

DataAreaId добавляется в индекс ItemIdx.

6. Добавьте еще одно поле — CustAccount, создайте еще один индекс — CustAccountIdx (AlloowDuplicate = No, AlternativeKey = No), добавьте поле CustAccount в индекс CustAccountIdx

CustAccountIdx состоит из трех полей: CustAccount, DataAreaId, Partition.

7. Сделаем CustAccountIdx (AllowDuplicate = Yes)

8. Поле RecId добавляется в индекс CustAccountIdx.

Одна из самых интересных частей (с моей точки зрения) части. Я сижу несколько таблиц в готовом AX, где поле RecId добавлено в индекс, поэтому мы смоделируем ту же ситуацию:

поле RecId добавляется в индекс CustAccountIdx, но, несмотря на это (RecId всегда уникален), индекс CustAccountIdx остается NotUnique

9. Измените свойство для индекса CustAccountIdx с (AllowDuplicate Yes на No)

Итак, на мой взгляд, основная причина, по которой RecId добавлен в индекс, — это исправить какой-то пробел в модели данных. Например — вы создали индекс CustAccountIdx с одним полем, и вы решили, что этот индекс должен быть уникальным, и вы разработали некоторую функциональность, и после этого вы выясняете, что в соответствии с вашим бизнес-процессом могут быть дублированные записи. в вашей таблице с тем же CustAccount. Итак, у вас есть выбор: переписать код или просто добавить RecId в свой индекс CustAccountIdx. Может я ошибаюсь, и есть другие разумные причины для таких решений.

10. Отключить оба созданных индекса (ItemIdx и CustAccountIdx)

Оба отключенных индекса (ItemIdx и CustAccountIdx) удаляются.

Published On: 28 ноября, 2018 / Рубрики: Блог /

Развивайте бизнес с нами!

OntargIT является официальным партнером Microsoft по внедрению технологий Dynamics 365. С нашим опытом в различных отраслях, мы обеспечим индивидуальный подход и эффективные решения, которые будут идеально соответствовать потребностям вашей компании. Оставьте заявку сейчас, и наша команда экспертов поможет вам воспользоваться всеми преимуществами Dynamics 365.

Отправляя свои данные, я даю согласие на то, чтобы со мной связались

Развивайте бизнес с нами!

OntargIT является официальным партнером Microsoft по внедрению технологий Dynamics 365. С нашим опытом в различных отраслях, мы обеспечим индивидуальный подход и эффективные решения, которые будут идеально соответствовать потребностям вашей компании. Оставьте заявку сейчас, и наша команда экспертов поможет вам воспользоваться всеми преимуществами Dynamics 365.

Отправляя свои данные, я даю согласие на то, чтобы со мной связались