Tôi có một tình huống kỳ lạ. Sử dụng sp_whoisactive
tôi có thể thấy điều này:
Ok, với truy vấn này, tôi có thể thấy những gì đang kích hoạt (từ này có tồn tại trong tiếng Anh không?) Nó:
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
kết quả:
đó là một đơn giản select
. Tại sao điều này sử dụng f etch_cursor
?
Ngoài ra, tôi cũng thấy rất nhiều sql_texts "trống". Cái này có cái gì với "con trỏ" này không?
DBCC INPUTBUFFER (spid)
cho tôi thấy điều này:
Có câu hỏi này ở đây (do tôi thực hiện) nhưng tôi không biết liệu đây có phải là điều tương tự không.
EDIT1:
Sử dụng truy vấn được cung cấp bởi kin, tôi thấy điều này:
EDIT2:
Sử dụng Activity Monitor, tôi có thể thấy điều này:
Đó là truy vấn đắt nhất (Câu hỏi đầu tiên là có chủ ý, chúng tôi biết về nó).
Và một lần nữa, tôi muốn biết, tại sao đây select * from...
là lý do của FETCH CURSOR
...
EDIT3:
" select * from
..." này đang chạy từ một máy chủ khác (thông qua linked server
).
Chà, bây giờ tôi đang gặp vấn đề để hiểu những gì @kin nói.
Đây là execution plan
truy vấn (chạy trong cùng một máy chủ của cơ sở dữ liệu):
bây giờ, kế hoạch thực hiện, đang chạy trong máy chủ khác, thông qua máy chủ được liên kết:
Ok, không phải là một vấn đề quá. Và bây giờ! kế hoạch thực hiện, thông qua **activity monitor**
(giống nhau select * from
):