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

Error Accessing LastProcessed Property in SSAS Cube

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

Microsoft.AnalysisServices.AdomdServer.AdomdException: Server: The operation was cancelled by the user. at Microsoft.AnalysisServices.AdomdServer.CubeCollection..ctor(String mpCubeName) at Microsoft.AnalysisServices.AdomdServer.CubeDef.get_LastProcessed()
at Reporting.TryGetLastProcessDate() in d:\Projects\reporting\Reporting_Cube_Addons\Permissions.cs:line 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;
    }

但是即使捕获了异常,立方体似乎也停止工作了..

关于我可能做错了什么有什么想法吗?是否有其他更安全的方法来检索上次处理的日期?

我建议安装 ASSP 或使用此 code. Usage examples are here

我记得大约 10 年前 Context.CurrentCube.LastProcessed 有时会反映您启动 SSAS 实例的时间,而不是您处理多维数据集的时间。所以我们改用这种替代方法。我不知道该错误是否已修复,而且我不熟悉您描述的崩溃。但我希望上述方法对你有用。