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

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

点击这里察看该文章的英文版: 2960310
症状
假定您正在使用自定义远程 BLOB 存储 (RBS) 提供与运行.NET Framework 4.0 为 Microsoft 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 时发生访问冲突异常。
解决方案
此问题的修复程序可用于 RBS.msi 的最新功能包下载。如果您已使用建议的替代方法,您可以删除或启用日志记录相关标记,并保持supportRuntime标记。

注意通过使用新的 RBS.msi 应用此修复程序未应用此更新,您可以重新安装 RBS。
替代方法
若要变通解决此问题,请添加到配置文件和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 - 上次审阅时间:11/10/2016 01:05:00 - 修订版本: 8.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 kbexpertiseadvanced kbmt KB2960310 KbMtzh
反馈