症状
假设你使用查询创建本机编译的存储过程,该过程包含的大型表达式在 Microsoft SQL Server 2014 中包含超过256的运算符。 当你尝试在查询或过程上使用 showplan_xml 时,将收到以下错误:
消息41322、级别16、状态33、过程<sp_name>,行<line_number>的获取/PIT 导出/导入在数据库 id<id 号>中,使用对象 id <id 号>的内存优化表或本机编译存储过程失败。 错误代码为0x88000015。
原因
出现此问题的原因是 SQL Server 2014 中的缺陷。
解决方案
应用此修补程序后,对于具有大量运算符的本机过程,showplan_xml 将会成功。在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
要解决此问题,请使用以下解决方法:
-
将表达式拆分为多个子表达式。
-
使用括号显式强制使用表达式的嵌套,以生成宽但平坦的表达式树,而不是一个深嵌套的表达式树。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。