23.06.2009, 12:08 | #1 |
Участник
|
OLAP: проблема с программным процессингом измерений SSAS 2005
Коллеги, необходима ваша помощь в решении проблемы - при процессинге куба процессинг измерений не производится, если я не ошибаюсь
Исходные данные: 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 производится без проблем. |
|