你目前正处于脱机状态,正在等待 Internet 重新连接

修复 ︰ 时维护 RBS 与.NET Framework 4.0 中 SQL Server 相关的配置文件中的访问冲突

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2960310
症状
假定您使用的自定义的 RBS 提供与运行.NET Framework 4.0 SharePoint 2013 的远程 blob 存储。当您尝试运行垃圾清理其内部调用 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 时,您将收到在垃圾回收期间出现以下异常 ︰
正在启动维护任务。
正在启动垃圾回收。
开始引用扫描。
时间>: 错误 ︰ 0:::AssemblyLoad::: 读取扩展文件 xxxx 时出错。RemoteBlobStoreProvider.dll。
时间>: 错误 ︰ 0:::AssemblyLoad::: System.BadImageFormatException ︰ 此程序集生成的运行时比当前加载的运行时,不能加载。(从 HRESULT 异常 ︰ 0x8013101B)
时间>: 错误 ︰ 0:::AssemblyLoad::: 在 System.Reflection.Assembly.nLoadFile (字符串路径、 证据证据)
时间>: 错误 ︰ 0:::AssemblyLoad::: 在 System.Reflection.Assembly.LoadFile (字符串路径)时间>: 错误 ︰ 0:::AssemblyLoad::: Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize() 在

维护实用程序进行编译与运行.NET Framework 2.0 和无法加载程序集建立为枚举的 blob 和垃圾回收了.NET Framework 4.0。对于任何.NET Framework 应用程序中,可以使用其配置文件并添加要使用较新版本的.NET Framework 的 supportedRuntime 标记。用户组件的配置文件是 Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml,下面是一个示例 ︰
<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
现在,如果您尝试运行垃圾清理,Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 遇到访问冲突异常,异常堆栈是如下 ︰
System.AccessViolationException ︰ 试图读取或写入受保护的内存。这是通常指示其他内存已损坏。
在 System.Text.StringBuilder.AppendFormat (IFormatProvider 提供程序、 字符串格式、 对象 [] 参数)
在 Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails()
在 Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation()
在 Microsoft.Data.BlobStores.LogProvider.Initialize (日志级别日志级别)
在 Microsoft.Data.BlobStores.DebugPrint.InitializeProviders()
在 Microsoft.Data.BlobStores.DebugPrint.Initialize (布尔型 initializeProviders)
在 Microsoft.Data.BlobStores.DebugPrint.WriteLine (︰ 键入操作,日志级别级别、 Int32 blobStoreId、 异常异常、 字符串消息、 对象 [] arg)
在 Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.MainInternal() 在 Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main (就)
原因
第一个例外是因为维护实用程序随.NET Framework 2.0 版一起编译了并且无法加载程序集建立.NET Framework 4.0。尝试初始化日志记录提供程序 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 时发生访问冲突异常。
解决方案
第一次修复该问题的SQL Server累积更新包
应用此修复程序后,应解决访问冲突异常问题。如果您使用建议的解决方法,您可以 go-ahead 并删除/启用日志记录相关的标记并使 supportRuntime 标记。

注意:可以通过使用新的 RBS.msi 应用此修复程序未应用此更新,请重新安装 RBS。

SQL Server 2012 sp2 的累积更新 1

对于 SQL Server 2014年累积更新 2

SQL Server 2012 sp1 的累积更新 10

有关累积更新 SQL Server

SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。为 SQL Server,请查阅最新的累积更新 ︰
替代方法
若要解决这种情况下可以将以下额外配置添加到配置文件和 supportedRuntime 标记。这些标记禁用维护应用程序的日志记录功能,如初始化日志记录提供程序时引发的异常。
 <startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup>     <RemoteBlobStorage>        <Logging>            <add key="ConsoleLog" value="0" />            <add key="FileLog" value="0" />            <add key="CircularLog" value="0" />            <add key="EventViewerLog" value="0" />            <add key="DatabaseTableLog" value="0" />        </Logging>    </RemoteBlobStorage>
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

属性

文章 ID:2960310 - 上次审阅时间:03/14/2016 07:38:00 - 修订版本: 5.0

Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2012 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2960310 KbMtzh
反馈
rosoft.com/ms.js'><\/script>");