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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2012, 17:54   #1  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Lightbulb Добавление полей в существующую таблицу - баг или фича ?
AX 3.0, MS SQL 2005
При добавлении нового поля в существующую таблицу через контекстное меню, в базе данных, вновь созданное поле распологается перед системными полями, а при создании путем перетаскивания расширеного типа, или перечисления, или во время затяжки проэкта, новое поле распологается после системных.
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 11.10.2012, 21:49   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Не уверен что понимаю физический смысл выражений "поле распологается до и после", но все же... Ну допустим - и чо ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 11.10.2012, 22:52   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Vadik Посмотреть сообщение
Не уверен что понимаю физический смысл выражений "поле распологается до и после", но все же... Ну допустим - и чо ?
Я думаю, что имеется в виду, что отображение структуры таблицы в SQL Management Studio отображает поля в порядке, описанном топикстартером.

Это влияет на то, что если в двух родственных приложениях (т.е. полученных недавно путем копирования исходного приложения, но в которых после копирования уже были выполнены некоторые модификации, т.о. сделавших их неидентичными)
одно и то же поле в таблицу независимо добавлялось разными разработчиками разными способами - то данные между этими двумя таблицами нельзя будет перенести через конструкцию INSERT INTO <table1> SELECT * FROM <table2>.
Т.е. * в таблице <table2> выдаст список полей в ином порядке, нежели ожидается в конструкции INSERT INTO для <table1>

Другое дело - что это некритично и лечится копированием приложения и административным запрещением параллельного добавления полей в родственные приложения
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: S.Kuskov (1), kair84 (1).
Старый 12.10.2012, 10:04   #4  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Действительно, ничего критичного, если обходиться только средствами разработки АХ. Но некоторые "убер-запросы" можно реализовать только через SQL, и при использовании конструкции INSERT INTO <table1> SELECT * FROM <table2>, возникают... - неудобства, не более того. Но конструкция INSERT INTO <table1>[(<Field1>,<Field2>,...)] SELECT [(<Field1>,<Field2>,...)] FROM <table2> устраняет эти неудобства.
Разработка ведется в отдельной копии приложения, а готовый проект импортируется в основное приложение, здесь ОНО и всплыло, мелочь - казалось бы, а не приятно. Основное непонятно - почему поля добавляются разными способами.
Старый 12.10.2012, 10:47   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от kair84 Посмотреть сообщение
Действительно, ничего критичного, если обходиться только средствами разработки АХ. Но некоторые "убер-запросы" можно реализовать только через SQL, и при использовании конструкции INSERT INTO <table1> SELECT * FROM <table2>, возникают... - неудобства, не более того. Но конструкция INSERT INTO <table1>[(<Field1>,<Field2>,...)] SELECT [(<Field1>,<Field2>,...)] FROM <table2> устраняет эти неудобства.
Ну... тут можно что сказать... Только то, что уже давно всем известно:
Вести разработку не только в АХ чревато
  • неполнотой информации в перекрестных ссылках, на которые очень полезно опираться, как на информацию что где и в каком качестве используется. А для полей таблиц - эта информация особенно полезна - она позволяет показать где происходит запись данных, а где чтение
  • необходимостью иметь в штате человека, одновременно знающего и T-SQL (PL-SQL) и X++
Правда, сейчас сам Microsoft взял курс на разработку для АХ в разных программных средах (C#, Visual Studio)

А самое главное - в ряде случаев код в БД может быть заменен на код Х++ без заметной потери производительности путем изменения архитектуры данных, алгоритма обработки или постановки задачи. Тут конечно мне тяжело говорить за все случаи, потому что далеко не всегда есть возможность переделки механизма "с нуля". Но тем не менее, при разработке нового кода - имеет смысл лишний раз задуматься об этом.

В частности, на моей практике я встречал случаи реализации тех или иных алгоритмов путем выборки данных, перелива результата выборки во временную таблицу, затем их обработки, еще нескольких раз перелива и т.д.
Такой подход как раз и требует конструкции INSERT INTO на больших объемах данных.
Но при достаточно тщательном продумывании архитектуры алгоритма "с нуля"- этих переливов часто получалось избегать (или они не были столь объемными). Что повышало производительность системы.

Впрочем это все лирика, а к исходному вопросу отношения не имеет. Мое мнение - что об порядке полей в таблице просто никто не задумывался при реализации ядра.
__________________
Возможно сделать все. Вопрос времени
Старый 12.10.2012, 10:51   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от kair84 Посмотреть сообщение
Основное непонятно - почему поля добавляются разными способами.
Где-то проскакивала информация о том, что аксапта для увеличения производительности добавлении поля в таблицу вместо использования ALTER TABLE может пересоздавать всю таблицу целиком. Ключевое слово - может, т.е. может пересоздавать таблицу а может и не пересоздавать. Возможно именно с этим связан различный порядок следования полей?
Старый 12.10.2012, 11:23   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Где-то проскакивала информация о том, что аксапта для увеличения производительности добавлении поля в таблицу вместо использования ALTER TABLE может пересоздавать всю таблицу целиком.
Не думаю. Тогда бы терялись данные, либо было бы заметно долгое добавление поля (представьте себе время на "переливку" InventTrans на нормальном объеме данных), которое и так встречается при изменении индекса (время на создание индекса на больших объемах данных - очень не маленькое)
__________________
Возможно сделать все. Вопрос времени
Старый 12.10.2012, 11:49   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Не думаю.
Оптимизация апгрейда больших баз
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 12.10.2012, 12:15   #9  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Да, по максимуму обходимся средствами разработки Ах., через SQL, напрмер, реализовали формирование прайсов, время сократилось в разы, ну это так....

Больше похоже но то, что это 2 разных метода (написанные разными разработчиками) выполняющих одну и ту же задачу.
В прочем, особо тут нечего обсуждать, это еще одна из "особенностей" Ах., хотел поделиться наблюдением, может кому то и пригодится.
За это сообщение автора поблагодарили: sukhanchik (2).
Теги
поля в базе данных

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Добавление полей на форму в run-time Ar DAX: Программирование 22 02.03.2012 00:14
добавление поля в таблицу с огромным количеством записей rpr DAX: Программирование 22 24.04.2009 14:13
Edit-метод и Relation - баг или фича ? TasmanianDevil DAX: Программирование 9 20.11.2008 10:16
Баг при импорте форм... или фича? vallys DAX: Программирование 19 06.03.2006 10:09
Добавление строк в существующую таблицу! Kolbin_Mihail DAX: Программирование 9 18.03.2005 13:48

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

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

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