修复︰ 正在运行 SQL Server 2008年报告服务或 SQL Server 2008年数据库引擎时出现错误消息:"致命执行引擎错误 (000006427F44AE16)".NET Framework 公共语言运行库中出现了严重错误"

适用于: SQL Server 2008 StandardSQL Server 2008 EnterpriseSQL Server 2008 Developer

Microsoft 为一个可下载文件分发 Microsoft SQL Server 2008年的修补程序。修补程序是累积性的因为每个新版本包含的所有修补程序,包含上一个 SQL Server 2008 的所有安全修补程序的修补都程序版本。

症状


虽然 Microsoft SQL Server 2008年报告服务 (SSRS 2008) 呈现大型报表或大型模型,您将收到以下运行时错误信息︰
来源︰.NET 运行库

日期︰
事件 ID: 1023年
任务类别: 无
级别︰ 错误
关键词︰ 经典
用户︰ 不适用
计算机︰
说明:
.NET 运行时版本 2.0.50727.3603-执行引擎错误 (000006427F44AE16) (80131506)

此外可能 SSRS 2008 日志文件中记录以下错误消息︰
rshost ! rshost ! 18f0 ! < 日期时间 >:: 电子错误︰ 生成转储并退出此进程由于严重的运行时错误。

SQL Server 2008年中运行的公共语言运行时 (CLR) 对象时,在 SQL Server 2008年数据库引擎也可能会发生此问题。在这种情况下,您可能会收到以下错误消息︰
< 时间 > 服务器错误︰ 6536,严重性︰ 16,状态︰ 1。
在.NET Framework 公共语言运行库中出现 < 时间 > 服务器 A 致命错误。SQL Server 正在关闭。如果重新启动服务器后,再次出现错误,请与客户支持服务联系。

SQL 错误日志可能会显示带有以下字样的堆栈转储为转储︰

<time> Server * *******************************************************************************<time> Server *
<time> Server * BEGIN STACK DUMP:
<time> Server * 03/24/11 19:05:12 spid 0
<time> Server *
<time> Server * A fatal error occurred in .NET Framework runtime.

<time> Server * *******************************************************************************
<time> Server *
<time> Server * BEGIN STACK DUMP:
<time> Server * 03/24/11 19:05:23 spid 0
<time> Server *
<time> Server * Full CLR state dump: A fatal error occurred in .NET Framework runtime.

原因


混合程序集使用 CreateThread Win32 API 或 BeginThread Win32 API 来创建线程时,将出现此问题。该线程以后尝试转换到托管代码。这一转变将使 CLR 运行库宿主请求任务上下文。为明确禁止这种转换,则会发生运行时错误。



注意:因为每个计划程序缓存需要线程都在非优先模式中,他们尝试访问缓存之前,明确不允许转换。

解决方案



此问题的修补程序首次发布的累积更新 7 为 SQL Server 2008 Service Pack 1。有关此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章 ︰
979065累计更新 SQL Server 2008 Service Pack 1 包 7
注意:因为版本具有累计性,所以每个新修补程序版本包含上一个 SQL Server 2008 修补程序版本随附的所有修补程序和所有安全修复程序。我们建议您考虑将应用包含此修复程序的最新的修补程序版本。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
SQL Server 2008年生成 SQL Server 2008 Service Pack 1 发布后发布的970365
为特定的 SQL Server 服务包创建 Microsoft SQL Server 2008年的修补程序。必须将一个 SQL Server 2008 Service Pack 1 的修补程序应用到安装的 SQL Server 2008 Service Pack 1。默认情况下,在下一次 SQL Server service pack 中包含任何 SQL Server service pack 中提供的修补程序。

解决方法


若要变通解决此问题对于 SQL Server 2008年数据库引擎,尝试确定是否任何不安全的 SQL CLR.NET 程序集加载到数据库引擎以及有可能产生的会遇到此问题的线程。避免使用这样的程序集,或从系统逐个删除它们,直到症状被隔离和 subsides 问题。

例如,您可能会看到类似于下面显示的 SQL CLR 程序集将 SQL 错误日志中的信息的使用情况以及可能会触发故障现象︰
2011-03-29 12:01:01.00 spid51 安全程序集 < 程序集名称 > 版本 = 0.0.0.0,区域性程序 = null,processorarchitecture = msil 载入 appdomain 1 (< appdomain 名称 >)

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

参考资料


SQL Server 的增量服务模式的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

935897的增量服务模式是可以从 SQL Server 团队提供报告的问题的修补程序



有关命名 SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

822499对于 Microsoft SQL Server 软件更新程序包的新命名方案


有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
用于描述 Microsoft 软件更新的标准术语的824684说明