症状
请考虑以下情况:
-
在 Microsoft SQL Server 2008 R2 Analysis Services (SSAS 2008 R2)或 Microsoft SQL Server 2012 Analysis Services (SSAS 2012)中创建多维表达式(MDX)查询。
-
该查询对父/子层次结构中的某些成员使用一元运算符。
-
在父/子层次结构中的这些成员上定义范围计算。
-
查询访问时间维度中的多个日期
-
您运行查询。
在这种情况下,查询的执行速度很慢。 此外,你还可能会收到以下错误消息:
正在执行查询 .。。XML for Analysis 分析程序: XML for Analysis 请求在完成之前超时。
注意 如果你在 Microsoft SQL Server 2000 Analysis Services (SSAS 2000)中运行同一查询,则不会出现此问题。
解决方案
若要解决此问题,请应用以下修复程序。 安装此修复程序后,可以使用新的属性(CellByCellCalculationMode)在 Analysis Services 配置文件(Msmdsrv)中进行配置。 若要解决此性能问题,请添加此属性,并将 CellByCellCalculationMode 的默认值从 0 更改为 3。 执行此操作后,Msmdsrv 文件应在 <查询> 部分下包含以下节点:
<CellByCellCalculationMode>3</CellByCellCalculationMode>
累积更新信息
SQL Server 2012
此问题的修补程序首次在 SQL Server 2012 的累积更新1中发布。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2679368 SQL Server 2012 的累积更新包1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本 必须将 SQL Server 2012 修补程序应用到 SQL Server 2012 的安装。
SQL Server 2008 R2
此问题的修补程序首次发布,即累积更新8。有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2534352 SQL Server 2008 R2 累积更新程序包8 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本
SQL Server 2008 R2 Service Pack 1
此问题的修补程序首次在 SQL Server 2008 R2 Service Pack 1 的累积更新4中发布。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2633146 SQL Server 2008 R2 Service Pack 1 的累积更新程序包4注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
有关一元运算符的详细信息,请访问以下 MSDN 网站:
有关一元运算符的常规信息有关 SCOPE 语句的详细信息,请访问以下 MSDN 网站: