คำถามติดแท็ก cursors

2
สองเซสชันสร้าง #temp tables ด้วยชื่อเดียวกันได้หรือไม่
ฉันกำลังสร้างตารางชั่วคราว ( #myTable) และใช้เคอร์เซอร์ สิ่งนี้สร้างปัญหาหรือไม่เมื่อผู้ใช้พร้อมกันเข้าถึงเคอร์เซอร์ผ่านแอปพลิเคชันของฉัน ฉันอนุญาตให้สร้างตารางชั่วคราวแยกด้วยชื่อเดียวกันได้หรือไม่ ต่อไปนี้เป็นตัวอย่างรหัส: Open cursor; Fetch Next from cursor into @Variable_Temp_Table_Name; Create table #myTable(pk int) While @@Fetch_Status = 0 Begin Fetch Next from cursor into @Variable_Temp_Table_Name; End

1
sp_cursoropen และขนาน
ฉันพบปัญหาด้านประสิทธิภาพด้วยข้อความค้นหาที่ฉันไม่สามารถเข้าใจได้ ฉันดึงแบบสอบถามออกจากคำจำกัดความของเคอร์เซอร์ แบบสอบถามนี้ใช้เวลาไม่กี่วินาทีในการดำเนินการ SELECT A.JOBTYPE FROM PRODROUTEJOB A WHERE ((A.DATAAREAID=N'IW') AND ((A.CALCTIMEHOURS<>0) AND (A.JOBTYPE<>3))) AND EXISTS (SELECT 'X' FROM PRODROUTE B WHERE ((B.DATAAREAID=N'IW') AND (((((B.PRODID=A.PRODID) AND ((B.PROPERTYID=N'PR1526157') OR (B.PRODID=N'PR1526157'))) AND (B.OPRNUM=A.OPRNUM)) AND (B.OPRPRIORITY=A.OPRPRIORITY)) AND (B.OPRID=N'GRIJZEN'))) AND NOT EXISTS (SELECT 'X' FROM ADUSHOPFLOORROUTE C WHERE ((C.DATAAREAID=N'IW') AND ((((((C.WRKCTRID=A.WRKCTRID) AND (C.PRODID=B.PRODID)) AND …

1
sp_cursorprepexec ทำให้ 53 ล้านอ่าน?
เรากำลังเรียกใช้การติดตั้ง Dynamics AX 2012 ด้วย SQL Server 2012 ฉันรู้ว่าเคอร์เซอร์ไม่ควรใช้อีกต่อไป แต่ AX กำลังใช้มันและเราไม่สามารถเปลี่ยนพฤติกรรมนี้ดังนั้นเราจึงต้องทำงานกับมัน วันนี้ฉันได้รับข้อความค้นหาที่แย่มากโดยมีผู้อ่านมากกว่า 53 ล้านคนและเวลาดำเนินการมากกว่า 20 นาที ฉันตรวจสอบข้อความค้นหานี้ผ่านเครื่องมือตรวจสอบของเรา SentryOne declare @p1 int set @p1=1073773227 declare @p2 int set @p2=180158805 declare @p5 int set @p5=16 declare @p6 int set @p6=1 declare @p7 int set @p7=2 exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 bigint,@P2 …

3
“ FETCH API_CURSOR0000 …” มากมายบน sp_WhoIsActive (SQL Server 2008 R2)
ฉันมีสถานการณ์ที่แปลก ใช้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: ใช้การตรวจสอบกิจกรรมฉันสามารถเห็นสิ่งนี้: มันเป็นข้อความค้นหาที่แพงที่สุด …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.