2016-07-12 17 views
0

SQLクライアントでSHOWPLANの機能を有効にすると、「無効なカーソル状態」エラーが表示される理由を理解しようとしています。SQLサーバー:SHOWPLANがオンのときに無効なカーソル状態

私は実行するコードは以下の通りです:

SET SHOWPLAN_XML ON; 

Select * 
From Sys.Objects 

SET SHOWPLAN_XML OFF; 

This is the error I get when I run this

すべてのヘルプは、これはあなたのエラーを修正する必要があり

+0

:自分のバッチを必要とし、いくつかのコマンド

はこれをそこにしてみていますか? – scsimon

答えて

0

をいただければ幸いです。

SET SHOWPLAN_XML ON; 
GO 

Select * From Sys.Objects 
GO 

SET SHOWPLAN_XML OFF; 
GO 
0

カーソルは開いたままになっているようです。あなたはDEALLOCATE {{[GLOBAL] cursor_nameは}

カーソル(ご質問の一部ではないとなっているコード) DEALLOCATEに覚えておく必要があります| @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は、バッチで単独で存在する必要があります。あなたは3つの別々のバッチを作成し、各コマンドの後に `GO`を入れた場合は、同じエラーが出るん

SET SHOWPLAN_XML ON;  
GO 

SELECT * FROM Sys.Objects;  
GO 

SET SHOWPLAN_XML OFF;  
GO 
関連する問題