SQL Server查看未释放游标的方法

 更新时间:2016年03月14日 13:40:40   作者:潇湘隐者  
这篇文章主要介绍了SQL Server查看未释放游标的方法的相关资料,需要的朋友可以参考下

一直以来对SQL SERVER的游标都不怎么感冒,也很少使用SQL Server里面的游标,前几天有一位网友问如何检查数据库里面没有释放的游标,觉得有点意思,就测试验证了一下,顺便整理于此。

会话1:我们模拟一个应用程序或脚本,在打开游标后,忘记关闭、释放游标。

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

此时如果我们如何检查数据库里面没有释放的游标?其实SQL SERVER提供了一个动态管理函数sys.dm_exec_cursors,它返回有关在各种数据库中打开的游标的信息。

SELECT * FROM sys.dm_exec_cursors(0) 

关于该动态管理函数返回的表的各个字段的解释,可以参考MSDN文档。不同数据库版有所区别。如果要查询没有关闭的游标,则需要对字段is_open进行过滤(指定游标是否处于打开状态。1为打开,0表示关闭)

会话2:查看没有关闭的游标

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

如果想查看已经关闭,但是没有释放的游标,可以在会话1执行关闭游标命令CLOSE Cursor_Test;但是不释放游标,如下截图所示


另外,可以用下面SQL查看服务器上打开时间超过指定时间(1 小时)的游标的信息,根据需要自行调整查询条件。

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查看未释放游标的方法,希望对大家有所帮助!

相关文章

  • SQL Server利用sp_spaceused如何查看表记录存在不准确的情况

    SQL Server利用sp_spaceused如何查看表记录存在不准确的情况

    这篇文章主要给大家介绍了关于SQL Server利用sp_spaceused如何查看表记录存在不准确情况的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • SQL写法--行行比较

    SQL写法--行行比较

    行行比较是 SQL 规范,关系型数据库都应该支持这种写法,本文通过代码以及与其他写法进行比较来具体讲解这一规范,大家跟随小编一起来学习吧
    2021-08-08
  • SQL Server异常代码处理的深入讲解

    SQL Server异常代码处理的深入讲解

    这篇文章主要给大家介绍了关于SQL Server异常代码处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • SQLSERVER简单创建DBLINK操作远程服务器数据库的方法

    SQLSERVER简单创建DBLINK操作远程服务器数据库的方法

    这篇文章主要介绍了SQLSERVER简单创建DBLINK操作远程服务器数据库的方法,涉及SQLSERVER数据库的简单设置技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • SQL Server 磁盘请求超时的833错误原因及解决方法

    SQL Server 磁盘请求超时的833错误原因及解决方法

    这篇文章主要介绍了SQL Server 磁盘请求超时的833错误原因及解决方法,需要的朋友可以参考下
    2017-06-06
  • sql中的char与varchar有什么区别

    sql中的char与varchar有什么区别

    varchar使用起来较为灵活,节省了一定的空间,但是它在判断位数时也耗费了时间,从整个系统的性能角度来说,char数据类型处理的速度更快,有时甚至可以超出varchar处理速度的很多倍,本文给大家介绍
    sql中的char与varchar有什么区别,一起看看吧
    2023-10-10
  • 海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案...
    2007-03-03
  • SQL Server 复制需要有实际的服务器名称才能连接到服务器

    SQL Server 复制需要有实际的服务器名称才能连接到服务器

    今天在做sql Server 2005的实验的时候碰到的问题,问题描述很清楚,怀疑是我以前给计算机修改了名称而导致的.可以用select @@servername和select serverproperty ('servername')对照一下,两个的结果是否一样
    2012-06-06
  • sql语句之数据操作介绍

    sql语句之数据操作介绍

    表中数据的变化牵一发而动全身,会同时导致到索引中数据的变化。因此如果查询语句不需要索引,就应该删除无用的索引以提高效率。
    2013-03-03
  • SQLServer行列互转实现思路(聚合函数)

    SQLServer行列互转实现思路(聚合函数)

    这篇文章主要为大家详细介绍了SQLServer行列互转实现思路,使用聚合函数pivot/unpivot实现行列互转,感兴趣的小伙伴们可以参考一下
    2016-03-03

最新评论