通用cube refresh方案

通用cube refresh c# script 解决方法:

需要设置的变量如下:

User::varcubename,User::varolapconnstr,User::varolapdbname

Cube 名字,olap连接字符串,和db名字.

这几个变量需要在script task中运用.

Script task中的代码如下,可以根据具体需要做修改:

public void Main()

{

// TODO: Add your code here

Dts.TaskResult = (int)ScriptResults.Success;

   

//User::varolapconnstr,User::varolapdbname

var olapconnstr = Dts.Variables["User::varolapconnstr"].Value.ToString();

var olapdbname = Dts.Variables["User::varolapdbname"].Value.ToString();

var olapcubename = Dts.Variables["User::varcubename"].Value.ToString();

   

//Connect db then process

Server _server = new Server();

 

try

{

_server.Connect(olapconnstr);

if (_server.Connected)

{

   

Database _db = _server.Databases.FindByName(olapdbname);

//Process dimensions

if (_db != null)

{

foreach (Dimension _dim in _db.Dimensions)

{

_dim.Process(ProcessType.ProcessFull);

}

   

//Process cube

if (!string.IsNullOrEmpty(olapcubename))

{

Cube _cb = _db.Cubes.FindByName(olapcubename);

if (_cb != null)

_cb.Process(ProcessType.ProcessFull);

}

else

{

//process every cube

foreach (Cube _cb in _db.Cubes)

{

try

{

_cb.Process(ProcessType.ProcessFull);

}

catch (Exception ex)

{

   

Dts.Events.FireWarning(0, "CUBE Refresh", ex.Message, "", 0);

}

   

}

}

}

}

}

catch (Exception ex)

{

   

Dts.Events.FireWarning(0, "CUBE Refresh", ex.Message, "", 0);

}

finally

{

if(_server.Connected)

_server.Disconnect();

}

 

}
View Code

 如果你只想processdata,则可以在代码里面把cube.processtype改成ProcessData即可.

posted on 2013-11-30 21:18  tneduts  阅读(609)  评论(0编辑  收藏  举报

导航