SQL Server:SHOWPLAN打开时无效的光标状态

时间:2016-07-12 15:28:14

标签: sql-server

我试图弄清楚为什么我会得到一个无效的光标状态'我打开SQL客户端中的SHOWPLAN功能时出错。

我运行的代码如下:

SET SHOWPLAN_XML ON;

Select * 
From Sys.Objects

SET SHOWPLAN_XML OFF;

This is the error I get when I run this

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

这应该可以解决您的错误。

SET SHOWPLAN_XML ON;
GO

Select * From Sys.Objects
GO

SET SHOWPLAN_XML OFF;
GO

答案 1 :(得分:0)

您的光标似乎处于打开状态。您需要记住DEALLOCATE光标(代码不是您问题的一部分)

  

DEALLOCATE {{[GLOBAL] cursor_name} | @cursor_variable_name}

由于未提供打开的游标代码,我无法告诉您要使用的参数。

我相信这会有所帮助close all cursors

-- Declare a cursor variable to hold the cursor output variable  
-- from sp_cursor_list.  
DECLARE @Report CURSOR;  

-- Execute sp_cursor_list into the cursor variable.  
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,  
      @cursor_scope = 2;  

-- Fetch all the rows from the sp_cursor_list output cursor.  
FETCH NEXT from @Report;  
WHILE (@@FETCH_STATUS <> -1)  
BEGIN  
   FETCH NEXT from @Report;  
END  

-- Close and deallocate the cursor from sp_cursor_list.  
CLOSE @Report;  
DEALLOCATE @Report;  
GO  

最重要的是你还有另一个错误。

  

消息1067,级别15,状态1,行0 SET SHOWPLAN语句必须   是批次中唯一的陈述。

正如错误所示,您需要将其分解为不同的批次。 SET SHOWPLAN 必须在批处理中单独使用。有几个命令需要自己的批次

试试这个:

SET SHOWPLAN_XML ON;      
GO

SELECT   * FROM   Sys.Objects;      
GO

SET SHOWPLAN_XML OFF;      
GO