sp_WhoIsActive (SQL Server 2008 R2) 上有很多“FETCH API_CURSOR0000...”

Rac*_*SQL 9 sql-server-2008 process execution-plan cursors

我有一个奇怪的情况。使用sp_whoisactive我可以看到:

奇怪的

好的,通过这个查询,我可以看到是什么触发了(这个词在英语中存在吗?)它:

SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text
FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running
CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t
Run Code Online (Sandbox Code Playgroud)

结果:

它只是一个选择

这是一个简单的select. 为什么要使用 f etch_cursor

另外,我也看到了很多“空白”的 sql_texts。这与这个“光标”有关系吗?

空白的

DBCC INPUTBUFFER (spid) 给我看这个:

打印

有这个问题 在这里(我做的),但我不知道这是否是同样的事情。


编辑1:

使用 kin 提供的查询,我看到了这一点:

仍然没有代码。


编辑2:

使用活动监视器,我可以看到:

最昂贵的查询

这是最昂贵的查询(第一个是故意的,我们知道)。

再一次,我想知道,为什么这select * from...FETCH CURSOR……的原因。


编辑3:

这个“ select * from...”是从另一台服务器(通过linked server)运行的。

好吧,现在我无法理解@kin 所说的内容。

这是execution plan查询的(在数据库的同一服务器中运行):

数据库的同一台服务器

这是现在,通过链接服务器在另一台服务器上运行的执行计划:

在此处输入图片说明

好的,也不是问题。现在!执行计划,通过**activity monitor**(相同select * from):

这到底是怎么回事?

Rac*_*SQL 1

嗯...我们解决了问题。在运行“select * from...”的过程中有一个更新。我评论了更新。没有更多问题了。