主頁 > 知識(shí)庫 > SQL Server查看未釋放游標(biāo)的方法

SQL Server查看未釋放游標(biāo)的方法

熱門標(biāo)簽:服務(wù)外包 AI電銷 百度競價(jià)排名 地方門戶網(wǎng)站 Linux服務(wù)器 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 呼叫中心市場需求

一直以來對(duì)SQL SERVER的游標(biāo)都不怎么感冒,也很少使用SQL Server里面的游標(biāo),前幾天有一位網(wǎng)友問如何檢查數(shù)據(jù)庫里面沒有釋放的游標(biāo),覺得有點(diǎn)意思,就測(cè)試驗(yàn)證了一下,順便整理于此。

會(huì)話1:我們模擬一個(gè)應(yīng)用程序或腳本,在打開游標(biāo)后,忘記關(guān)閉、釋放游標(biāo)。

DECLARE Cursor_Test CURSOR FORSELECT * FROM dbo.TEST;OPEN Cursor_Test; 

此時(shí)如果我們?nèi)绾螜z查數(shù)據(jù)庫里面沒有釋放的游標(biāo)?其實(shí)SQL SERVER提供了一個(gè)動(dòng)態(tài)管理函數(shù)sys.dm_exec_cursors,它返回有關(guān)在各種數(shù)據(jù)庫中打開的游標(biāo)的信息。

SELECT * FROM sys.dm_exec_cursors(0) 

關(guān)于該動(dòng)態(tài)管理函數(shù)返回的表的各個(gè)字段的解釋,可以參考MSDN文檔。不同數(shù)據(jù)庫版有所區(qū)別。如果要查詢沒有關(guān)閉的游標(biāo),則需要對(duì)字段is_open進(jìn)行過濾(指定游標(biāo)是否處于打開狀態(tài)。1為打開,0表示關(guān)閉)

會(huì)話2:查看沒有關(guān)閉的游標(biāo)

SELECT 
session_id , 
cursor_id , 
name , 
creation_time , 
is_openFROM 
sys.dm_exec_cursors(0)WHERE 
is_open = 1; 

如果想查看已經(jīng)關(guān)閉,但是沒有釋放的游標(biāo),可以在會(huì)話1執(zhí)行關(guān)閉游標(biāo)命令CLOSE Cursor_Test;但是不釋放游標(biāo),如下截圖所示


另外,可以用下面SQL查看服務(wù)器上打開時(shí)間超過指定時(shí)間(1 小時(shí))的游標(biāo)的信息,根據(jù)需要自行調(diào)整查詢條件。

SELECT creation_time 
,cursor_id 
,name 
,c.session_id 
,login_name 
,c.creation_time 
,c.is_openFROM 
sys.dm_exec_cursors (0) AS c 
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_idWHERE 
DATEDIFF(hh, c.creation_time, GETDATE()) > 1;GO

以上所述是小編給大家介紹的SQL Server查看未釋放游標(biāo)的方法,希望對(duì)大家有所幫助!

您可能感興趣的文章:
  • Sql Server臨時(shí)表和游標(biāo)的使用小結(jié)
  • SQL Server使用游標(biāo)處理Tempdb究極競爭-DBA問題-程序員必知
  • MS SQL Server游標(biāo)(CURSOR)的學(xué)習(xí)使用
  • sqlserver游標(biāo)使用步驟示例(創(chuàng)建游標(biāo) 關(guān)閉游標(biāo))
  • SQLServer用t-sql命令批量刪除數(shù)據(jù)庫中指定表(游標(biāo)循環(huán)刪除)
  • SQL Server 游標(biāo)語句 聲明/打開/循環(huán)實(shí)例
  • SQL Server游標(biāo)的使用/關(guān)閉/釋放/優(yōu)化小結(jié)
  • SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))
  • sqlserver中觸發(fā)器+游標(biāo)操作實(shí)現(xiàn)
  • SQL Server游標(biāo)的介紹與使用

標(biāo)簽:湘潭 衡水 崇左 黃山 湖南 蘭州 銅川 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server查看未釋放游標(biāo)的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266