Показать сообщение отдельно
Старый 10.04.2009, 12:40   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
2 Raven Melancholic

Для этого можно воспользоваться формой SysSqlSetup (доступ к ней есть через форму SQL Администрирование, но он включается только для ORACLE, хотя использовать можно и для MS SQL).

Только для работы с SQL2005 надо ее слегка доработать
В метод sqlServerInit() надо добавить
X++:
...
    resultSet = statement.executeQuery('select groupname from sysfilegroups');
    while(resultSet.next())
    {
        segmentName = resultSet.getString(1);
        sqlSegment.add(segmentName);
    }
   sqlSegment.setDropSize();
}
Изменение файловых групп надо делать в этой форме. После этого запускать синхронизацию в AOT

И еще.
Кластерные индексы хранятся вместе с данными, по-этому перенести их в другую файловую группу не получится

PS
В этой форме список таблиц выводится в порядке следования их ID. Для настройки неудобно, по-этому сделал сортировку по наименованию
X++:
void fillTables()
{
    int             tableCounter;
    dictTable       dictTable;
    Set             set = new Set(Types::String);
    SetEnumerator   tableEnum;

    tableList.lock();
    for(tableCounter = dictionary.tableNext(0); tableCounter > 0; tableCounter = dictionary.tableNext(tableCounter))
    {
        dictTable = new DictTable(tableCounter);
        if((!dictTable.isTmp()) && (!dictTable.isMap()))
            set.add(dictTable.name());
//            tableList.add(dictTable.name());
    }
    tableEnum = set.getEnumerator();
    while (tableEnum.moveNext())
    {
        tableList.add(tableEnum.current());
    }
    tableList.unLock(true);
}
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 10.04.2009 в 12:44. Причина: Добавил метод fillTables()
За это сообщение автора поблагодарили: fed (5), Raven Melancholic (2).