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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.02.2006, 13:05   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Не удалять индексы при синхронизации
Проблема :
При синхронизации аксапта удаляет индексы созданные админом БД (не прописанные в AOT).

Кто нибудь знает как обойти такую фичу ?

Ситуация смешная : Синхронизация длится 5 минут а работа скрипта по созданию индексов, которые прописал наш админ длится 20 минут
Старый 28.02.2006, 13:13   #2  
twilight is offline
twilight
MCTS
MCBMSS
 
881 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
А что мешает завести индексы в AOT?
Старый 28.02.2006, 13:17   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Например то, что индекс начинается не с поля dataareaid - этот индекс создавал наш админ по ораклу. Утверждает что оптимален именно тот набор полей и именно в том порядке который он указал. У меня нет причин ему не доверять. Кроме того есть bitmap индексы. Аксапта кажется их не могет строить...
Старый 28.02.2006, 15:58   #4  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Стало интересно, глянул - стало неинтерсно - функция синхронизации dbSynchronize класса Application уходит корнями в глубокий super куда простым сметрным заказано.. Но можнов принципе пропускать такие таблицы при синхронизации списком и синхронизировать вручную, что несколько утомительно (слабо сказано, если вспомнить еще про таблицу sqldictionary)..
Старый 28.02.2006, 22:47   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Честно сказать в Oracle у меня ну удаляются "лишние" индексы. Единственное что заметил - идет запрос к view user_constraints c условием на Primary Key при синхронизации таблицы. Может ваш индекс PK и по-этому он удаляется из базы?

В MS SQL такое поведение наблюдал, но оно обходится довольно просто.
При синхронизации идет вызов системной процедуры sp_statistics, находящейся в схеме master. Все индексы, не входящие в AOT или не соответствующие ему - удаляются.
Обходится так - создал копию этой процедуры в б/д Axpta'ы и в выборку по sysindexes добавил условие -
and (x.name like 'I!_%' escape '!')
Теперь индексы, не начинающиеся с I_ (т.е. кроме создаваемых самой Axapta'ой) ей не "видны".

Правда возникает вопрос - кто помимо Axapta'ы использует эту sp и не аукнется ли?
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Lazy_Tiger (2).
Старый 01.03.2006, 10:35   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Прошу прощения - про Oracle я написал неправильно (смотрел не ту схему )

Но принцип такой-же как и для MS SQL, единственное отличие - использование системных view.

При синхронизации Axapta отправляет на сервер такой запрос
X++:
SELECT a.index_name, b.column_name, c.column_expression, a.index_type, a.uniqueness 
FROM user_indexes a, user_ind_columns b, user_ind_expressions c 
WHERE b.table_name=UPPER('INVENTTABLE') AND a.index_name=b.index_name AND 
b.index_name=c.index_name(+) AND b.column_position=c.column_position(+)
ORDER BY b.index_name,b.column_position
Т.е. в данном случае надо перенести в свою схему из схемы sys просмотр (view) user_ind_columns и в нем добавить условие на таблицу sys.obj$ idx
"and (idx.Name like 'I!_%' escape '!')"
Для того, чтобы создать такой view необходимо добавить пользователю Axapta грант на select для таблиц из схемы sys attrcol$, col$, icol$, ind$, obj$
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Logger (1).
Старый 20.11.2006, 16:11   #7  
DmitrySt is offline
DmitrySt
Участник
 
17 / 18 (1) ++
Регистрация: 22.11.2004
Адрес: Минск
Цитата:
Сообщение от twilight Посмотреть сообщение
А что мешает завести индексы в AOT?
Сам не проверял, но пришло в голову (как развитие предыдущей идеи):
завести индексы в АОТ, отключить их использование (Enabled = NO), а затем - подменить напрямую на сервере на свои? Будет Аксапта отключенные индексы удалять / перестраивать?
Старый 20.11.2006, 16:51   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от DmitrySt Посмотреть сообщение
Сам не проверял, но пришло в голову (как развитие предыдущей идеи):
завести индексы в АОТ, отключить их использование (Enabled = NO), а затем - подменить напрямую на сервере на свои? Будет Аксапта отключенные индексы удалять / перестраивать?
Если не воспользоваться советом AndyD то Аксапта при синхронизации может их удалить. Для запуска синхронизации иногда достаточно безобидной компилции метода на таблице.
Старый 20.11.2006, 16:54   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Logger Посмотреть сообщение
Для запуска синхронизации иногда достаточно безобидной компилции метода на таблице.
Для запуска синхронизации достаточно выполнить любую правку любого объекта внутри ветки Data Dictionary.

Другими словами, Axapta считает что внутри ветки Data Dictionary собраны объекты, которые так или иначе влияют на отображение таблиц в СУБД.
__________________
полезное на axForum, github, vk, coub.
Старый 20.11.2006, 18:30   #10  
usp is offline
usp
Участник
 
21 / 10 (1) +
Регистрация: 31.07.2003
Адрес: Москва
Господа! А не проще ли создать индексы в схеме другого пользователя, не владельца таблиц Аксапты? С соответствующим ограничением прав на Oracle... Ведь оптимизатор базы использует любые индексы, созданные по запрашиваемым таблицам.
Старый 20.11.2006, 19:34   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от usp Посмотреть сообщение
Господа! А не проще ли создать индексы в схеме другого пользователя, не владельца таблиц Аксапты? С соответствующим ограничением прав на Oracle... Ведь оптимизатор базы использует любые индексы, созданные по запрашиваемым таблицам.
А аксапта увидит эти таблицы ?
Старый 21.11.2006, 03:00   #12  
Ax1D is offline
Ax1D
Участник
 
36 / 16 (1) ++
Регистрация: 01.02.2002
Адрес: Vancouver, British Columbia, Canada
Цитата:
Сообщение от Logger Посмотреть сообщение
Например то, что индекс начинается не с поля dataareaid - этот индекс создавал наш админ по ораклу. Утверждает что оптимален именно тот набор полей и именно в том порядке который он указал. У меня нет причин ему не доверять.
Существует параметр конфигурационной утилиты:

-internal=CROSSCOMPANY

с ним можно добавлять поле DataAreaID в индекс и вручную определить порядок полей в индексе.
За это сообщение автора поблагодарили: Logger (2).
Старый 21.11.2006, 09:08   #13  
usp is offline
usp
Участник
 
21 / 10 (1) +
Регистрация: 31.07.2003
Адрес: Москва
Таблицы остаются на месте, у владельца, скрываются только индексы. Аксапта их не видет, а оптимизатор Oracle "всегда пожалуйста".
Старый 21.11.2006, 10:19   #14  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ax1D Посмотреть сообщение
Существует параметр конфигурационной утилиты:

-internal=CROSSCOMPANY

с ним можно добавлять поле DataAreaID в индекс и вручную определить порядок полей в индексе.
Спасибо за ценную инфу.
Старый 21.11.2006, 11:51   #15  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Обратите внимание на совет Максима Горбунова
aEremenko: Порядок полей в индексе для DAX 3.0
__________________
Axapta v.3.0 sp5 kr2
Старый 02.04.2007, 18:52   #16  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
Thumbs up а теперь как это сделать в MS SQL 2005
0) сохраните скрипт процедуры sp_statistics в файлик

1) Нужно зайти в режиме single mode, для этого останавливаем сервис. далее start->Run-> "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER -m (главное тут ключик -m, а путь к exe посмотрите у себя)

2) открываем заранее сохраненный скрипт, дополняем его в начале строчками:
use mssqlsystemresource
GO
alter database mssqlsystemresource set read_write

удаляем строку USE MASTER , поскольку это неправда и оно теперь вовсе не там лежит
правим код процедуры (см. сообщения выше)

в конце добавляем строчки:
alter database mssqlsystemresource set read_only
GO

ЗАПУСКАЕМ.

НАВОРОТИЛИ БЛИН.

ВНИМАНИЕ! После накатывания очередного SP на MS SQL - процедурку придется повторить. Ибо оно тупо перепишет вам ресурсы
__________________
И все они создания природы...

Последний раз редактировалось Lazy_Tiger; 03.04.2007 в 17:35.
За это сообщение автора поблагодарили: driller (1).
Старый 03.04.2007, 17:22   #17  
DocSerzh is offline
DocSerzh
Участник
 
51 / 22 (0) +++
Регистрация: 28.06.2004
Цитата:
Сообщение от Lazy_Tiger Посмотреть сообщение
0) сохраните скрипт процедуры sp_statistic в файлик

1) Нужно зайти в режиме single mode, для этого останавливаем сервис. далее start->Run-> "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER -m (главное тут ключик -m, а путь к exe посмотрите у себя)

2) открываем заранее сохраненный скрипт, дополняем его в начале строчками:
use mssqlsystemresource
GO
alter database mssqlsystemresource set read_write

удаляем строку USE MASTER , поскольку это неправда и оно теперь вовсе не там лежит
правим код процедуры (см. сообщения выше)

в конце добавляем строчки:
alter database mssqlsystemresource set read_only
GO

ЗАПУСКАЕМ.

НАВОРОТИЛИ БЛИН.

ВНИМАНИЕ! После накатывания очередного SP на MS SQL - процедурку придется повторить. Ибо оно тупо перепишет вам ресурсы
sp_statisticS? или я не в теме...
Старый 03.04.2007, 17:35   #18  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
Цитата:
Сообщение от DocSerzh Посмотреть сообщение
sp_statisticS? или я не в теме...
ну естественно. Описка, бывает
__________________
И все они создания природы...
Старый 03.04.2007, 17:45   #19  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Насколько я помню, у одного из клиентов, работающих с Oracle мы реализовывали подобную штуку. Разбираться можно начать с формы SysSqlSetup и с того, как система преобразует параметры с этой формы в ddl - запросы.
Могу ошибаться, но мне помнится, что система позволяет протаскивать свои параметры с этой формы на запросы, посылаемые на Oracle при синхронизации.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Задача: запретить удалять строки разнесённых журналов. jeky DAX: Программирование 12 28.01.2009 22:22
Ошибка синхронизации при накате SP4 EE FP1 Silence DAX: Администрирование 11 07.03.2006 18:27
При каждом обращении строит индексы в Old nicko DAX: Администрирование 0 16.02.2005 08:57
Проблема синхронизации при установке SP3 на SP2 v3.0 ravil DAX: Администрирование 6 23.06.2004 17:20

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

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

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