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.
Теги
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, время: 08:45.