Коллеги, необходима ваша помощь в решении проблемы -
при процессинге куба процессинг измерений не производится, если я не ошибаюсь
Исходные данные:
SSAS = 2005
DataSource = Oracle 10
Настроен reference на Microsoft.AnalysisServices.dll
Цель: для определенного куба программно запроцессить все его измерения
Ограничение:
1) по возможности, обойтись без XMLA, Command и т.д.
2) пока не предлагать пересоздание измерений
Проблема: Cтрока процессинга измерения приводит к исключению:
cubeDim.Process( Microsoft.AnalysisServices.ProcessType::ProcessUpdate ); //Эта строка приводит к исключению.
Причем, метод cubeDim.Process() пробовал использовать с различными параметрами ProcessType, так и без них - результат одинаково плачевный.
X++:
void processCubeDimensions()
{
Microsoft.AnalysisServices.Server svr ;
Microsoft.AnalysisServices.DatabaseCollection dbc;
Microsoft.AnalysisServices.Database db ;
Microsoft.AnalysisServices.DimensionCollection dimCollection ;
Microsoft.AnalysisServices.Dimension dim ;
Microsoft.AnalysisServices.DataSourceCollection dsc;
Microsoft.AnalysisServices.DataSource ds;
Microsoft.AnalysisServices.CubeCollection cubeCollection;
Microsoft.AnalysisServices.Cube maCube;
Microsoft.AnalysisServices.CubeDimensionCollection cubeDimCollection;
Microsoft.AnalysisServices.Dimension cubeDim;
System.Collections.IEnumerator ie;
;
try
{
svr = new Microsoft.AnalysisServices.Server();
svr. Connect("Srv106");
svr.BeginTransaction();
if (svr !=null && svr.get_Connected())
{
dbc = svr.get_Databases();
if (dbc)
{
db = dbc.Find("Axapta BAS dat");
dimCollection = db.get_Dimensions();
}
}
dsc = db.get_DataSources();
ds = dsc.FindByName("TestOLAPFunc");
cubeCollection = db.get_Cubes();
maCube = cubeCollection. FindByName("TestOLAPFunc");
cubeDimCollection = maCube.get_Dimensions();
ie = cubeDimCollection.GetEnumerator();
while (ie.MoveNext())
{
cubeDim = ie.get_Current();
info(cubeDim.get_Name());
cubeDim.Process( Microsoft.AnalysisServices.ProcessType::ProcessUpdate );
svr.CommitTransaction();
}
}
catch
{
svr.RollbackTransaction();
}
}
Краткое описание проблемы:
Инициализация всех объектов в коде происходит без ошибок.
Исключение возникает только при попытка запроцессить измерение.
Думал, что проблема в правах доступа, но пролистав роли
X++:
rc = svr.get_Roles();
ie = rc.GetEnumerator();
while (ie.MoveNext())
{
r = ie.get_Current();
info(r.get_Name());
}
получил
Administrators
Обновление измерений через интерфейс SQL BI Dev Studio производится без проблем.