在SSAS多维数据集中访问LastProcessed属性时出错

时间:2016-06-23 07:23:53

标签: c# ssas

我有一个程序集,它根据当前用户设置角色维度数据。 在程序集中,我需要访问Context.CurrentCube.LastProcessed属性。 代码本身工作正常。除非多维数据集已被新部署或处理。然后,有时检索Context.CurrentCube.LastProcessed属性会引发以下错误:

  

Microsoft.AnalysisServices.AdomdServer.AdomdException:Server:The   操作被用户取消。在   Microsoft.AnalysisServices.AdomdServer.CubeCollection..ctor(字符串   mpCubeName)at   Microsoft.AnalysisServices.AdomdServer.CubeDef.get_LastProcessed()
  在Reporting.TryGetLastProcessDate()中   d:\ PROJECTS \报告\ Reporting_Cube_Addons \ Permissions.cs:行   181

我在try catch中包含了这一行,并带有一个后备值:

    public static DateTime TryGetLastProcessDate()
    {
        DateTime last;
        try
        {
            last = Context.CurrentCube.LastProcessed;
        }
        catch (Exception ex)
        {
            log("Failed to retrieved lastProcess Date. Error:");
            log(ex.ToString());
            last = new DateTime(2015, 01, 01);
        }
        return last;
    }

但是看起来即使异常被捕获,立方体也会停止工作..

关于我可能做错的任何想法?还有其他更安全的方法来检索上次处理的日期吗?

1 个答案:

答案 0 :(得分:1)

我建议安装ASSP或使用此code。用法示例为here

我记得10年前有一个问题,Context.CurrentCube.LastProcessed有时会反映您何时启动SSAS实例而不是处理多维数据集。所以我们改用这种替代方法。我不知道这个bug是否已修复,我不熟悉你描述的崩溃。但我希望上面的方法适合你。