这是我在尝试处理SQL Server 2012 MOLAP多维数据集时从日志中得到的错误。
"等待页(1:2044928)数据库ID 2的缓冲区闩锁类型3时超时。;42000。"Source="Microsoft SQL Server 2012 Analysis Services"HelpFile="Error ErrorCode="3240034318"Description="OLAP存储引擎中的错误:处理多维数据集数据库中"PE多维数据集"多维数据集的度量值组的"Measurement"分区时出错。">
我已经用XMLA编写了处理任务的脚本,并通过代理作业中的SSAS命令执行处理。第一步是处理更新所有维度,这成功了,但当我想处理多维数据集的数据时,加载失败,并弹出此错误。
我第一次尝试使用SSIS包进行处理,但这导致整个服务器崩溃,而不仅仅是作业失败。这让我相信这是一个性能问题,但运行该作业的机器是一台有16个处理器和112 GB RAM的Azure虚拟机,所以我不知道该去哪里找。我还尝试在服务器上不进行任何其他活动的情况下运行作业,但这没有帮助。包含SSAS实例的磁盘仍有500GB可用空间。度量值组正在查询一个包含1.8亿条记录的表。
在开发人员服务器上用更少的数据处理多维数据集时,没有问题。我曾经在SSAS中直接处理SSAS多维数据集时成功地处理了整个多维数据集,但通过DTEXEC、SSISDB或使用SSDT处理会导致服务器崩溃。早些时候,我得到了不同的超时错误,但在将SSAS ExternalCommandTimeOut、ExternalConnectionTimeOut和ForceCommitTimeout属性调整为0后,这种情况不再发生。
我尝试了多种处理设置,但因为我认为这是一个性能问题,我试图使处理尽可能降低性能。
处理设置: 对象:多维数据集选项:过程数据;处理顺序:具有单独事务的顺序。写回表选项:使用现有;不要处理受影响的对象。
更新:我已经处理了触发错误的度量值,但没有完成,在活动监视器中我看到了很多Wait_Type IO_Completion和CXPacket。当查询sys.dm_exe_requests时,我看到一个具有wait_type IO_Completion的Select,它已经运行了很长时间,并且有很多读取。昨晚,我试图处理除之前触发错误的测量组之外的所有测量,但不幸的是,整个服务器再次崩溃。。。
更新2:我们已经考虑升级到高级存储,但这意味着我们必须从A11切换到DS或GS系列。这意味着我们需要调整包含实时解决方案的整个VM的大小,从而导致恢复VHDS和替换包含部分实时解决方案在内的当前操作系统磁盘的时间和精力减少。我们确定的另一个选项是应用分区或改进度量中的底层查询。不幸的是,现在的快速解决方案将大大有助于销售长期解决方案改进。
更新3:我们已经与Microsoft取得了联系,他们建议从A11 VM迁移到D14 V2并升级到高级存储磁盘。这将是我们的下一步,并将在下周五执行。迁移后,我将更新或关闭此帖子。
如果您错过信息,请告诉我。任何能帮助我确定情况的建议都将不胜感激!
升级到更适合这种情况的虚拟机(DS14 V2)和升级到P30高级存储磁盘解决了出现的问题。问题不在于处理或配置多维数据集的方式,而在于使用的硬件。