在过滤多维模型中父子层次结构参差不齐的简单维度时,“内部错误:发生了意外的异常。”

时间:2019-07-19 10:53:24

标签: ssas

平台:SQL Server Analysis Services 2016 RTM和更高版本(多维)

数据库中,我们具有以下公司维度Company

父子层次结构不会循环,但参差不齐。 的外观如下(treant-js绘图): Company parent-child graph

Analysis Services项目仅包含一个维度-公司,使用向导创建。所有设置均设置为默认值。 “ CompanySK”是KeyColumn,“ CompanyName”是NameColumn。 “ CompanyParentSK”重命名为“ Company Hierarchy”,“ Usage”设置为“ Parent”,表示此属性包含父ID。没什么异常: Dimension in Visual Studio

该项目已始终加载和处理,没有问题。 层次结构有效,并在树查看器中正确表示。

现在,如果我们像Reporting Services一样尝试使用MDX 查询维度,那么正在发生奇怪的事情。

当您尝试列出“国家名称”为“德国”的所有公司时:

WITH 
MEMBER [Measures].[ParameterCaption] AS [Company].[Company Name].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS [Company].[Company Name].CURRENTMEMBER.UNIQUENAME 
MEMBER [Measures].[ParameterLevel] AS [Company].[Company Name].CURRENTMEMBER.LEVEL.ORDINAL 
SELECT {
[Measures].[ParameterCaption],
[Measures].[ParameterValue],
[Measures].[ParameterLevel]
} ON COLUMNS , 
[Company].[Company Name].ALLMEMBERS ON ROWS
FROM [HierarchyErrorCube]
WHERE STRTOSET( "{[Company].[Country Name].&[Germany]}" );

它将返回错误:

Executing the query ...
Internal error: An unexpected exception occurred.
Run complete

但是如果您要要求澳大利亚:

(...)
WHERE STRTOSET( "{[Company].[Country Name].&[Australia]}" );

它可以正常工作。

一些有趣的事实

  • 如果您要从选择中删除/评论[Measures]。[ParameterCaption]-查询开始起作用,
  • 如果要通过将“公司层次结构”更改回常规属性来禁用它-查询开始工作,
  • 删除过滤器(WHERE)使查询正常工作,
  • 如您所见-即使“公司层次结构”不在上面列出的任何查询中,它也会以某种方式影响引擎,并且在检索“公司名称”属性上的CURRENTMEMBER.MEMBER_CAPTION时,查询将失败,而另一个属性-“国家/地区名称”-已过滤。并不是所有过滤后的值,但我们在这里找不到任何模式(例如,如果国家/地区级别以某种方式影响了)。
  • 使用SQL Server Profiler(在捕获范围内启用了所有事件)并嗅探失败的查询之一,很明显,该错误是在获取成员的最后阶段出现的-正是针对CURRENTMEMBER.MEMBER_CAPTION。

您可以下载项目和数据here on my blogpost.。您还可以找到我们尝试解决此问题的所有方法。

Visual Studio项目中是否有任何设置可以帮助您,或者Reporting Services MDX代码是否错误?任何帮助将不胜感激。

0 个答案:

没有答案