怀疑一个基于SQLSERVER的系统有游标溢出现象,要查一下,所以需要在sqlserver2005里获取数据库当前打开的所有游标,以及产生游标所对应的SQL语句.
在ORACLE里很容易,select * from v$open_cursor 就可以拿到了.
不知sqlserver里是否有类似的方法,请大侠帮忙,在线等!!
在ORACLE里很容易,select * from v$open_cursor 就可以拿到了.
不知sqlserver里是否有类似的方法,请大侠帮忙,在线等!!
调试欢乐多
--查看游标
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,没有默认值,可以是下列值中的一个。值 说明
1
报告所有本地游标。
2
报告所有全局游标。
3
报告本地游标和全局游标。
我在查询分析器里这样写:
declare @Report CURSOR;
exec master.dbo.sp_cursor_list @Report OUTPUT , 3;
执行后只是提示执行成功,并没有看到我想要的结果列表,正确的写法应该是怎么样的?请具体一些,谢谢!
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