怀疑一个基于SQLSERVER的系统有游标溢出现象,要查一下,所以需要在sqlserver2005里获取数据库当前打开的所有游标,以及产生游标所对应的SQL语句.
在ORACLE里很容易,select * from   v$open_cursor  就可以拿到了.
不知sqlserver里是否有类似的方法,请大侠帮忙,在线等!!   

解决方案 »

  1.   

    使用 sp_describe_cursor_columns 描述由游标返回的结果集的特性。使用 sp_describe_cursor_tables 报告游标引用的基表。sp_describe_cursor 与 sp_cursor_list 报告的信息相同,但前者只适用于指定的游标。
      

  2.   

    多谢大侠们指点.是否可以给出比较完整的能够在查询分析器里用的语句的例子?看了些资料,觉得可能sp_cursor_list是有用的,但如何放参数??如何得到最后的结果集呢??直接exec sp_cursor_list这样自然是出不来的.谢谢了!
      

  3.   


    --查看游标
    select * from master.dbo.syscursors where status<>-1--帮助
    --参数1 游标名
    --参数2 游标类型报告当前为连接打开的服务器游标的属性。语法
     sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT 
              , [ @cursor_scope = ] cursor_scope
     备注
    sp_cursor_list 生成连接打开的当前服务器游标列表,并对每个游标的全局属性进行说明,例如游标的可滚动性和可更新性。sp_cursor_list 列出的游标包括: Transact-SQL 服务器游标。
    API 服务器游标,由 ODBC 应用程序打开,然后调用 SQLSetCursorName 为游标命名。
    使用 sp_describe_cursor_columns 对游标返回的结果集的属性进行说明。使用 sp_describe_cursor_tables 报告游标引用的基表。sp_describe_cursor 报告的信息与 sp_cursor_list 相同,但只用于指定游标。参数
    [ @cursor_return = ] cursor_variable_name OUTPUT 已声明的游标变量的名称。cursor_variable_name 的数据类型为 cursor,没有默认值。游标是只读的可滚动动态游标。[ @cursor_scope = ] cursor_scope指定要报告的游标级别。cursor_scope 的数据类型为 int,没有默认值,可以是下列值中的一个。值  说明  

     报告所有本地游标。
     

     报告所有全局游标。
     

     报告本地游标和全局游标。
     
      

  4.   

    谢谢大侠,不过我还是没搞清楚.
    我在查询分析器里这样写:
    declare @Report CURSOR;
    exec master.dbo.sp_cursor_list @Report OUTPUT , 3;
    执行后只是提示执行成功,并没有看到我想要的结果列表,正确的写法应该是怎么样的?请具体一些,谢谢!
      

  5.   

    declare @Report CURSOR;
    exec master.dbo.sp_cursor_list @Report OUTPUT , 3; FETCH NEXT from @Report
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
       FETCH NEXT from @Report
    ENDCLOSE @Report
    DEALLOCATE @Report
    GO