KB2960310-修复:在 SQL Server 中的相关配置文件中使用 .NET Framework 4.0 维护 RBS 时出现访问冲突

症状

假设你将自定义远程 BLOB 存储(RBS)提供程序与运行时 .NET Framework 4.0 结合使用,以便为 Microsoft SharePoint 2013 远程存储 blob。 当你尝试运行在内部调用 SqlRemoteBlobs 的垃圾清除时,在垃圾回收期间收到以下错误消息:

正在启动 Maintainer 任务。 开始垃圾回收。 开始引用扫描。 <时间>:错误:0::: AssemblyLoad:::读取扩展文件 xxxx 时发生错误。RemoteBlobStoreProvider <Time>: ERR:0::: AssemblyLoad::::::::: BadImageFormatException:此程序集的运行时比当前加载的运行时更新,无法加载。 (来自 HRESULT 的异常:0x8013101B) <时间>:错误:0:::: AssemblyLoad::: NLoadFile (string Path,证据证据) <TIME>: err:0::: AssemblyLoad::::::::::: LoadFile (String path) <Time>: ERR:0:::: AssemblyLoad::::::()

Maintainer 工具是使用 .NET Framework 2.0 运行时编译的,并且它不能加载基于 .NET Framework 4.0 的程序集以用于 blob 和垃圾回收的枚举。 对于任何 .NET Framework 应用程序,你可以使用应用程序的配置文件,并添加 supportedRuntime 标记以使用 .net Framework 的更高版本。 Maintainer 组件的配置文件是 SqlRemoteBlobs,如以下示例中所示:

<startup>            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

如果你尝试运行垃圾清理,则 SqlRemoteBlobs 遇到访问冲突异常,如下所示:

AccessViolationException:试图读取或写入受保护的内存。 这通常表示其他内存已损坏。 在 AppendFormat (IFormatProvider 提供程序、字符串格式、对象 [] 参数)的 SqlRemoteBlobs () at (InformationDetails (BlobStores)的(LogProvider)的(CreateHeaderInformation)中。在 microsoft 的(BlobStores)处进行(LogProvider) for data. LogLevel ()。 BlobStores (布尔 initializeProviders),位于 DebugPrint 操作、DebugPrint 级别、Int32 OperationType、异常异常、字符串消息、对象 [] 参数)。在(String [] args)处的(String [] 参数)中的(布尔值)的参数 [] arg)。

原因

出现第一个异常的原因是 Maintainer 工具是使用 .NET Framework 2.0 编译的。 该工具无法加载基于 .NET Framework 4.0 的程序集。 当你尝试初始化 SqlRemoteBlobs 的日志记录提供程序时,出现访问冲突异常。

解决方案

适用于 RBS 的最新功能包下载提供了此问题的修补程序。 如果您使用的是建议的解决方法,则可以删除或启用与日志记录相关的标记,并保留 supportRuntime 标记。注意 你可以使用新的 RBS msi 应用修补程序来重新安装 RBS,而不应用更新。

下载 MICROSOFT Sql server 2014 Service pack 1 (SP1)功能包 下载 microsoft Sql Server 2012 Service PACK 3 (SP3)功能包

解决方法

若要解决此问题,请将以下附加配置添加到配置文件以及 supportedRuntime 标记。 这些标记禁用了 Maintainer 工具的日志记录功能,因为在日志记录提供程序初始化期间将引发异常。

 <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 产品存在的问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×