KB2927748 - 修复:应用 SQL Server 2012 CU7 或 SQL Server 2014 后,PowerPivot 工作簿无法在 SharePoint 2013 中执行数据刷新

应用对象
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

此修补程序也适用于 Microsoft SQL Server 2014。

症状

假设计算机上安装了 Microsoft SQL Server 2012 PowerPivot for SharePoint 2013 加载项。 为 Microsoft SQL Server 2012 应用累积更新 7 后,某些 PowerPivot 工作簿无法在 Microsoft SharePoint 2013 中执行数据刷新操作。 此外,以下错误消息记录在 SharePoint ULS 日志中:

注意

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 99 中 已发生以下异常,但已处理,无需执行任何操作: System.Runtime.Serialization.SerializationException: 反序列化 Microsoft.AnalysisServices.SPAddin.DataRefresh.DataRefreshSchedule 类型的对象时出错。 根级别的数据无效。 Line 1, position 1167. ---> System.Xml。XmlException:根级别的数据无效。 Line 1, position 1167. 在 System.Xml。XmlTextReaderImpl.Throw (String res, String arg) at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace () System.Xml。XmlTextReaderImpl.ParseDocumentContent () System.Xml。System.Runtime.Serialization.ClassDataContract.ReadXmlValue 处的 XmlReader.ReadEndElement () (XmlReaderDelegator xmlReader、XmlObjectSerializerReadContext 上下文) 在 System.Runtime.Serializ...eac56a9c-5e2e-6094-7945-2704e646e1b7
<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 99 中 ...ation.XmlObjectSerializerReadContext.InternalDeserialize (XmlReaderDelegator 读取器,字符串名称,字符串 ns,类型 declaredType,DataContract& dataContract) 在 System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize (XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.DataContractSerializer.InternalReadObject (XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver) 在 System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions (XmlReaderDelegator 读取器、Boolean verifyObjectName、DataContractResolver dataContractResolver) --- 在 System.Runtime.Serialization.XmlObjectSerializer 结束内部异常堆栈跟踪---...eac56a9c-5e2e-6094-7945-2704e646e1b7

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 99 中 ....ReadObjectHandleExceptions (XmlReaderDelegator 读取器,Boolean verifyObjectName,DataContractResolver dataContractResolver) 在 System.Runtime.Serialization.DataContractSerializer.ReadObject (XmlReader 读取器) 位于 Microsoft.AnalysisServices.SPAddin.DataRefresh.DataRefreshSchedule.DeserializeDataRefreshScheduleProp (SPListItem 项) eac56a9c-5e2e-6094-7945-2704e646e1b7

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 00000 中 无法反序列化嵌入的计划。 必须重新创建它 eac56a9c-5e2e-6094-7945-2704e646e1b7

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 42 高 启动 dataRefresh 处理失败,出现以下异常: eac56a9c-5e2e-6094-7945-2704e646e1b7

2014/01/16 00:36:31.17 w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 99 高 异常:Microsoft.AnalysisServices.SPAddin.DataRefreshException: 无法在 Microsoft.AnalysisServices.SPAddin.DataRefresh.WorkItem.LoadWorkbookSchedule () Microsoft.AnalysisServices.SPAddin.DataRefresh.DataRefreshService.Execute () eac56a9c-5e2e-6094-7945-2704e646e1b7 找到此工作项的计划

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 97 中 尝试执行 SQL 查询时发生以下错误: System.Data.SqlClient.SqlException (0x80131904) : 找不到存储过程 “DataRefresh.ScheduleRuns”。 在 System.Data.SqlClient.SqlConnection.OnError (SqlException 异常,Boolean breakConnection, Action'1 wrapCloseInAction) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 在 System.Data.SqlClient.TdsParser.TryRun (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& DataReady) at System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at Syste...eac56a9c-5e2e-6094-7945-2704e646e1b7

<日期><时间> w3wp.exe (0x112C) 0x0458 PowerPivot 服务数据刷新 97 中 ...m.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean asyncWrite) atSystem.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery () at Microsoft.AnalysisServices.SPAddin.MTSAccessorBase.ExecuteNonQuery (String commandText, CommandType commandType, SqlParameter[] paramArray) Client...eac56a9c-5e2e-6094-7945-2704e646e1b7

注意

  • 如果数据刷新计划的序列化长度与原始长度相比太短,通常会出现此问题。
  • SQL Server 2014 中也存在此问题。

原因

出现此问题的原因是,在设置新的序列化计划之前未正确清除 Excel 工作簿上的自定义属性。 这会导致在设置新计划后保留额外的自定义属性。 因此,新计划失败。

解决方法

累积更新信息

此问题已首先在 SQL Server 的以下累积更新中修复。

SQL Server 2014 累积更新 1 /en-us/help/2931693

SQL Server 2012 SP1 累积更新 9 /en-us/help/2931078

关于 SQL Server 的累积更新

SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

      

修补程序信息
 Microsoft 提供了一个受支持的修补程序。 但此程序只用于解决本文中提到的问题。 仅将此修补程序应用于遇到此特定问题的系统。

如果修补程序可供下载,则本知识库文章顶部的“修补程序下载可用”部分。 如果此部分不存在,请向 Microsoft 客户服务和支持部门提交请求以获取该修补程序。

注意 如果发生其他问题或需要进行任何故障排除,您应该另行创建服务请求。 对于此特定修补程序无法解决的其他支持问题和事项,将照常收取支持费用。 若要获取 Microsoft 客户服务和支持部门的完整电话号码列表或另行创建服务请求,请访问以下 Microsoft 网站:

/contactus/?ws=support 注意 “修补程序下载可用”窗体显示了修补程序的可用语言版本。 如果您找不到需要的语言,则说明该语言版本的修补程序未提供。

解决方法

若要解决此问题,请按照下列步骤操作:

  1. 在 Microsoft Excel 2013 中打开工作簿。

  2. 在 “文件 ”菜单上,单击 “信息”。

  3. 单击 “属性”,然后单击 “高级属性”。

  4. 在 “高级属性 ”对话框中,单击“ 自定义 ”选项卡。然后,单击 “属性” 列表中名称类似于 pppDRSplitSchedulePrefix 并后跟数字的每个属性。

    注意 在转到下一个属性之前,请确保单击 删除 以删除该属性。

  5. 单击“确定”。

  6. 将文件重新保存到 SharePoint。 或者,在本地保存文件,然后上传到 SharePoint。

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。