|
![]() |
#1 |
Участник
|
В цикле while() стоит svr.CommitTransaction(), но нет вызова BeginTransaction() после этого.
Может, в первый раз выполняется, а следующие итерации уже вылетаюти из-за транзакции?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#2 |
Участник
|
Хм, поспешил и ошибся при форматировании кода
- в оригинале так : X++: try { svr.BeginTransaction(); // ................... while (ie.MoveNext()) { cubeDim = ie.get_Current(); info(cubeDim.get_Name()); cubeDim.Process( Microsoft.AnalysisServices.ProcessType::ProcessUpdate ); } svr.CommitTransaction(); } catch { svr.RollbackTransaction(); } |
|
![]() |
#3 |
Участник
|
Немного переписал cacth для работы с CLR-исключениями :
X++: System.Exception ex; str excMsg; //............................................................. atch (Exception::CLRError) { ex = ClrInterop::getLastException(); if (ex) { excMsg = ex.get_Message(); info(excMsg); } svr.RollbackTransaction(); } ![]() Process is not a member of CubeDimension Странно, а я ожидал объекты класса Dimension а не CubeDimension! |
|
![]() |
#4 |
Участник
|
Вот так код заработал:
X++: void CopyOfprocessCubeDimensions() { 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.CubeDimension cubeDim; System.Collections.IEnumerator ie; System.Exception ex; str excMsg; ; 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(); dim = cubeDim.get_Dimension(); dim.Process( Microsoft.AnalysisServices.ProcessType::ProcessUpdate ); } svr.CommitTransaction(); } catch (Exception::CLRError) { ex = ClrInterop::getLastException(); if (ex) { excMsg = ex.get_Message(); info(excMsg); } svr.RollbackTransaction(); } } |
|
![]() |
#5 |
Модератор
|
Если нет предубеждений к использованию SSIS, можно адаптировать этот package
Я так и сделал ![]() Но конечно гораздо кошернее будет, если заработает непосредственно из DAX
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Vadik
![]() Если нет предубеждений к использованию SSIS, можно адаптировать этот package
Я так и сделал ![]() Но конечно гораздо кошернее будет, если заработает непосредственно из DAX Прикольно - пересчитывается и измерения и куб. ![]() |
|
Теги |
olap, ssas, процессинг |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|