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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2007, 17:42   #1  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Вопрос поисследовать SqlScanMain\dropIndex
Имеем:
Ax4.0 sp1, sql 2005
таблица TransactTxt

при запуске синхронизации с проверкой Аксапте рвет голову на индексе
DataRecidIdx, в котором поля dataAreaId, Recid. Она считает, что поля в скуле и в словаре поменяны местами - ну это ладно, дальше она пытается этот индекс дропнуть :


X++:
void dropIndex(Statement stmt)
{
    SqlStatementExecutePermission ssep;
    str sqlString;
    ;

    if (sQLIndex.isIndexPrimary())
        this.dropConstraint(sQLIndex.getIndexName());

        // on Oracle, the primary index is dropped together with the constraint
    if (!(sQLIndex.isIndexPrimary() && SqlSystem::databaseBackendId() == DatabaseId::Oracle))
    {
        if( nIndexMask & #SQLFIELD_FLAG ) // Flag designating that index references must be prefixes with tablename
            sqlString = 'drop index ' + dictTable.name(DbBackend::Sql) + '.' + sQLIndex.getIndexName();
        else
            sqlString = 'drop index ' + sQLIndex.getIndexName();

        // dangerous API mitigation
        ssep =  new SqlStatementExecutePermission(sqlString);
        ssep.assert();
        // BP Deviation Documented
        stmt.executeUpdate(sqlString);
    }
}
Тут она дропает Constraint - прально, потому что индекс праймари и просто так не удалится

X++:
if (sQLIndex.isIndexPrimary())
        this.dropConstraint(sQLIndex.getIndexName());
но дальше удивительно

X++:
// on Oracle, the primary index is dropped together with the constraint
так вот - у меня sql 2005 и выполняя
X++:
alter table TRANSACTTXT drop constraint I_483DATARECIDIDX
я вижу что соответствующий индекс так же удаляется, хоть и не оракл вовсе. Соотв. она дальше пытается дропнуть индекс (которого уже нет) и вываливается ошибка синхронизации.

Напрашивается очевидное лечение (в данное время в данном месте - как в предыдущих скулях не смотрел, может надо учесть)

X++:
if (sQLIndex.isIndexPrimary())
{
        this.dropConstraint(sQLIndex.getIndexName());
        return;
}
Собстно - вопрос - я прав? и у всех ли такие проблемы?

Если тема где-то уже проскальзывала - ткните, я не нашел..

Последний раз редактировалось MironovI; 03.12.2007 в 17:51.
Старый 04.12.2007, 12:52   #2  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
up что-ли..
Старый 04.12.2007, 13:30   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от MironovI Посмотреть сообщение
Собстно - вопрос - я прав?
Да

Там еще один прикол похоже зарыт, готовьтесь

X++:
boolean removeIndex(Statement stmt)
{
    boolean indexDropped = false;
;
    if (sQLIndex.isIndexClustering())
    {
        this.printStringInReport( this.printReportFormatLine( dictTable.name(), '*' + dictIndex.name(),
                                "@SYS62520", false));
        return(false);   // cannot drop a clustering index without dropping the table
    }
хотя это в принципе м.б. полезно при настройке partitioning-а например
__________________
-ТСЯ или -ТЬСЯ ?
Старый 04.12.2007, 16:21   #4  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Мда, на это я тож нарвался - Аксапте чем-то не понравился индекс по полю с типом GUID и она тут же зохотела его убить, заботится о производительности что-ли?
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по модулю Расчеты с персоналом. Выплата заработной платы. Keks DAX: Функционал 7 28.12.2009 10:31
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Вопрос: учет затрат по закупкам в модуле Проекты Keks DAX: Функционал 5 13.07.2006 10:15
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Вопрос по счетам на оплату поставщикам sergey_alekseev DAX: Функционал 11 26.08.2003 19:43

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

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

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