开发者社区> 问答> 正文

有什么方法可以获取SQL Server中打开/分配的游标的列表吗?

我有一个创建并打开一些游标的存储过程。它会在最后关闭它们,但是如果遇到错误,则这些游标将保持打开状态!然后尝试运行游标时,后续运行将失败,因为具有该名称的游标已经存在。

有没有一种方法可以查询存在的游标以及它们是否打开,因此我可以关闭并取消分配它们?我觉得这比盲目地尝试关闭和吞并错误要好。

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 16:36:45 401 0
1 条回答
写回答
取消 提交回答
  • 可以在2008R2上运行,还没有测试过:

    USE MASTER GO select s.session_id, s.host_name, s.program_name, s.client_interface_name, s.login_name , c.cursor_id, c.properties, c.creation_time, c.is_open, con.text, l.resource_type, d.name, l.request_type, l.request_Status, l.request_reference_count, l.request_lifetime, l.request_owner_type from sys.dm_exec_cursors(0) c left outer join (select * from sys.dm_exec_connections c cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) mr) con on c.session_id = con.session_id left outer join sys.dm_exec_sessions s on s.session_id = c.session_id left outer join sys.dm_tran_locks l on l.request_session_id = c.session_id left outer join sys.databases d on d.database_id = l.resource_database_id

    2019-11-18 16:36:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载