ฉันมีสถานการณ์ที่แปลก ใช้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
ผลลัพธ์:
select
มันเป็นเรื่องง่าย ทำไมถึงใช้ f etch_cursor
?
นอกจากนี้ฉันเห็น sql_texts "blank" จำนวนมากด้วย สิ่งนี้มีบางอย่างกับ "เคอร์เซอร์" นี้หรือไม่?
DBCC INPUTBUFFER (spid)
แสดงให้ฉันเห็นนี้:
มีคำถามนี้ที่ นี่ (ทำโดยฉัน) แต่ฉันไม่รู้ว่านี่เป็นสิ่งเดียวกันหรือไม่
EDIT1:
เมื่อใช้เคียวรีที่จัดทำโดยญาติฉันเห็นสิ่งนี้
EDIT2:
ใช้การตรวจสอบกิจกรรมฉันสามารถเห็นสิ่งนี้:
มันเป็นข้อความค้นหาที่แพงที่สุด (อันแรกคือเจตนาเรารู้เกี่ยวกับมัน)
และอีกครั้งฉันอยากรู้ว่าทำไมนี่select * from...
คือเหตุผลของFETCH CURSOR
...
edit3:
" select * from
... " นี้กำลังทำงานจากเซิร์ฟเวอร์อื่น (ผ่านlinked server
)
ดีตอนนี้ฉันมีปัญหาที่จะเข้าใจสิ่งที่ @kin พูด
นี่คือexecution plan
แบบสอบถาม (ทำงานในเซิร์ฟเวอร์เดียวกันของฐานข้อมูล):
นี่คือแผนการดำเนินการที่เรียกใช้ในเซิร์ฟเวอร์อื่นผ่านเซิร์ฟเวอร์ที่เชื่อมโยง:
ตกลงไม่เป็นปัญหาเช่นกัน และตอนนี้! แผนการดำเนินการผ่าน**activity monitor**
(เดียวกันselect * from
):