症状
在 Microsoft SQL Server 2016 环境中,并行处理一个表的多个分区。 当你跟踪进度时,你会注意到至少一个列的重新编码事件。在这种情况下,处理操作可能会失败,并出现异常错误。 有时,处理可能会成功完成,但随后的查询将失败,并出现异常错误,类似于以下内容:
出现意外异常。出现意外异常。 (Microsoft SQL Server 2016 Analysis Services)程序位置: AnalysisServices (AnalysisServices 行为、AdomdClient IExecuteProvider、ExecuteTabular CommandBehavior、ICommandContentProvider 参数)。 contentProvider (AdomdPropertyCollection) commandProperties () IDataParameterCollection () AnalysisServices () AdomdClient () AdomdCommand ()的 ExecuteReader ()。 CommandBehavior () AnalysisServices ()的 AdomdClient ()中的 AdomdCommand ()的 ExecuteReader ()。
注意 有时,此问题在处理完成且对已处理的数据执行查询时出现。
解决方案
累积更新信息
针对此问题的修复包括在 SQL Server 的以下累积更新中:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
若要解决此问题,请执行下列操作之一:
-
确定哪些列需要重新编码,并在开头使用一个虚设分区来生成将在检测阶段强制进行哈希编码的值。 虚设分区必须是用于在并行开始之前选择编码的分区。 处理完所有分区后,您可以清除或删除该虚设分区。
-
使用串行处理,而不是并行处理。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
按表格分区的并行处理具有以下逻辑:
-
使用一个分区中的数据确定列的编码(值或哈希)。
-
选择编码后,其他分区可以并行开始处理。
-
如果选择了 "值编码" 和 "正在提取行",则可能会遇到不符合值编码方案的值。 在这种情况下,必须将整个列重新编码到哈希编码方案中。
-
此重新编码操作(将值编码转换为哈希编码)在同时处理其他分区时遇到问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。