2017-07-06 92 views
0

我只是想看看怎样的变化查询执行计划,当我添加窗口功能,如LAG()。错误的显示预计的执行计划与窗函数

但是,当我加窗函数来我查询像LAG()&点击“显示估计的执行计划”,它返回我下面的错误。

An error occurred while executing batch. Error message is: Error processing execution plan results. The error message is: 
There is an error in XML document (1, 12308). 
Instance validation error: 'Window Spool' is not a valid value for PhysicalOpType. 

SQL服务器:

Microsoft SQL Server 2016 (SP1) (KB3182545) 
13.0.4001.0 (X64) Oct 28 2016 18:17:30 
Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) 
on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600:) (Hypervisor) 

我从来没有经历过这种行为。任何想法为什么执行计划不能被估计?

+1

帮助 - >关于。 Management Studio是什么版本?最新版本[独立从SQL Server部署(https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms),所以没有理由不起来-至今。 –

+2

您是否使用旧版本的工具集?似乎可能会导致验证错误。如果服务器是2016年,请安装2016年SSMS工具。这里的地方,似乎是答案https://social.msdn.microsoft.com/Forums/en-US/05869260-f6a7-44a6-b2ab-da638e050ec2/instance-validation-error-window-spool-is相关线索 - 不是一个有效值换physicaloptype?论坛= TRANSACTSQL – Will

+0

完蛋了!我想通了,我已与SQL Management Studio中2008的客户端上运行窗口函数中使用SQL Server 2012以后添加,管理工作室的“旧”版本当然是不能显示的计划。 –

回答

0

解决方案:
Microsoft SQL Server Management Studio的版本比Microsoft SQL Server本身的版本旧。

在我的情况:
的Microsoft SQL Server Management Studio中版本10.50.1600.1(为SQL Server 2008 R2)
的Microsoft SQL Server 2016

像LAG作为窗口函数()已经发布了SQL Server 2012中,较旧的Management Studio版本无法使用窗口化函数解释/显示执行计划。

+0

最好使用单独下载的SSMS版本。这对于新的SQL版本保持最新,包括Azure SQL数据库,并包含对尚未发布版本的一些支持(SQL 2017)。本文撰写时的最新版本是SSMS 17.1。 –

+0

我知道。这里有点复杂。我必须在项目中使用客户的工作站,而不能安装任何东西。但我会尽力说服他们。 –