Tôi có một tình huống kỳ lạ. Sử dụng sp_whoisactivetô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 plantruy 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):








