Applies ToSQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web

Microsoft 在一个可下载文件中分发 Microsoft SQL Server 2008 R2 Service Pack 1 (SP1)或 Microsoft SQL Server 2012 修复程序。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 R2 Service Pack 1 (SP1)或 Microsoft SQL Server 2012 更新版本附带的所有修补程序和所有安全更新。

症状

当你在 Microsoft SQL Server 2008 R2 中运行包含公共语言运行时(CLR)用户定义的聚合(UDA)函数的并行查询时,可能会发生 NullReferenceException 异常或 InvalidOperationException 异常。 此外,你还会收到以下错误消息:

消息6522、级别16、状态2、行1A 在执行用户定义的例程或聚合期间出现 .NET Framework 错误 "<用户定义的例程或聚合名称>": NullReferenceException: Object 引用未设置为对象的实例。

解决方案

累积更新信息

SQL Server 2012

此问题的修补程序首次在 SQL Server 2012 的累积更新1中发布。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2679368 SQL Server 2012 的累积更新包1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本 必须将 SQL Server 2012 修补程序应用到 SQL Server 2012 的安装。

SQL Server 2008 R2 SP1 的累积更新程序包5

此问题的修补程序首次在累积更新5中发布。有关如何获取此累积更新包的 SQL Server 2008 R2 SP1 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2659694 SQL Server 2008 R2 SP1 的累积更新程序包5注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 R2 SP1 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2567616 发布 SQL Server 2008 R2 SP1 后发布的 SQL Server 2008 R2 版本

解决方法

要解决此问题,请不要运行使用并行执行计划的查询。 例如,你可以在服务器配置中将 最大并行度 选项设置为 1 ,或将 MAXDOP 查询提示选项设置为 1。

更多信息

有关 CLR UDA 的详细信息,请访问以下 MSDN 网站:

有关 CLR UDA 的常规信息

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。