ฉันใช้ SQL Server 2008 และสตูดิโอการจัดการ ฉันดำเนินการค้นหาที่ให้ผลหลายแถว ฉันพยายามยกเลิกผ่านปุ่มยกเลิกสีแดง แต่มันยังไม่หยุดในช่วง 10 นาทีที่ผ่านมา โดยปกติจะหยุดภายใน 3 นาที
สาเหตุเกิดจากอะไรและฉันจะหยุดทันทีได้อย่างไร
ฉันใช้ SQL Server 2008 และสตูดิโอการจัดการ ฉันดำเนินการค้นหาที่ให้ผลหลายแถว ฉันพยายามยกเลิกผ่านปุ่มยกเลิกสีแดง แต่มันยังไม่หยุดในช่วง 10 นาทีที่ผ่านมา โดยปกติจะหยุดภายใน 3 นาที
สาเหตุเกิดจากอะไรและฉันจะหยุดทันทีได้อย่างไร
คำตอบ:
เหตุผลอาจเป็นอย่างไร
การยกเลิกการค้นหาจะเกิดขึ้นทันทีโดยที่ความสนใจของคุณสามารถเข้าถึงเซิร์ฟเวอร์และได้รับการประมวลผล แบบสอบถามต้องอยู่ในสถานะที่ยกเลิกได้ซึ่งมักจะเป็นจริงยกเว้นว่าคุณดำเนินการบางอย่างเช่นการเรียกใช้บริการเว็บจาก SQLCLR หากความสนใจของคุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้โดยปกติจะเป็นเพราะตัวกำหนดตารางเวลาทำงานมากเกินไป
แต่ถ้าคำถามของคุณเป็นส่วนหนึ่งของธุรกรรมที่ต้องย้อนกลับการย้อนกลับจะไม่ถูกขัดจังหวะ หากใช้เวลา 10 นาทีก็ต้องใช้เวลา 10 นาทีและไม่มีอะไรที่คุณสามารถทำได้ แม้แต่การรีสตาร์ทเซิร์ฟเวอร์จะไม่ช่วย แต่จะทำให้การเริ่มต้นใช้งานนานขึ้นเท่านั้นเนื่องจากการกู้คืนต้องเสร็จสิ้นการย้อนกลับ
หากต้องการตอบว่าเหตุผลใดที่ใช้กับกรณีของคุณคุณจะต้องตรวจสอบตัวเอง
sp_who2 'active'
ตรวจสอบค่าภายใต้CPUTimeและDiskIO สังเกต SPID ของกระบวนการที่มีค่ามากในเชิงเปรียบเทียบ
kill {SPID value}
ก่อนอื่นให้ดำเนินการคำสั่งด้านล่าง:
sp_who2
หลังจากนั้นดำเนินการคำสั่งด้านล่างด้วย SPID ซึ่งคุณได้รับจากคำสั่งด้านบน:
KILL {SPID value}
นี่เป็นคำตอบที่โง่ ๆ แต่อย่างน้อยก็ใช้ได้ผลอย่างน่าเชื่อถือในกรณีของฉัน: ในสตูดิโอการจัดการเมื่อ "ยกเลิกการดำเนินการสืบค้น" ไม่หยุดการสืบค้นฉันเพียงแค่คลิกเพื่อปิดเอกสาร sql ปัจจุบัน มันถามฉันว่าฉันต้องการยกเลิกการสืบค้นหรือไม่ฉันตอบว่าใช่และดูเถิดในไม่กี่วินาทีมันก็จะหยุดทำงาน หลังจากนั้นระบบจะถามฉันว่าต้องการบันทึกเอกสารก่อนปิดหรือไม่ ณ จุดนี้ฉันสามารถคลิกยกเลิกเพื่อเปิดเอกสารและทำงานต่อไปได้ ไม่รู้ว่าเบื้องหลังเกิดอะไรขึ้น แต่ดูเหมือนว่าจะได้ผล
หากคุณยกเลิกและเห็นการทำงานนั้น
sp_who2 'active'
(การตรวจสอบกิจกรรมจะไม่พร้อมใช้งานบนเซิร์ฟเวอร์ sql เก่า 2000 FYI)
หา SPID ที่คุณต้องการฆ่าเช่น 81
Kill 81
วิ่ง sp_who2 'active'
อีกครั้งและคุณอาจสังเกตเห็นว่ามันกำลังนอนหลับ ...
เพื่อให้สถานะทำงานอีกครั้ง KILL
Kill 81
จากนั้นคุณจะได้รับข้อความเช่นนี้
SPID 81: transaction rollback in progress. Estimated rollback completion: 63%. Estimated time remaining: 992 seconds.
KILL {spid} WITH STATUSONLY
ไปดูข้อความสถานะ
คุณสามารถใช้แป้นพิมพ์ลัดALT+ Breakเพื่อหยุดการดำเนินการสืบค้น อย่างไรก็ตามอาจไม่ประสบความสำเร็จในทุกกรณี
--Find Session Id for respective all running queries
SELECT text, getdate(),*
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
---Kill specific session
kill 125
เห็นได้ชัดว่าบน sql server 2008 r2 64bit โดยมีการสืบค้นจาก IIS เป็นเวลานานดูเหมือนว่า kill spid จะไม่ทำงานการสืบค้นจะเริ่มต้นใหม่ครั้งแล้วครั้งเล่า และดูเหมือนว่าจะนำสไปดมาใช้ซ้ำ ข้อความค้นหาทำให้เซิร์ฟเวอร์ sql ใช้ cpu 35% ตลอดเวลาและหยุดเว็บไซต์ ฉันคาดเดา bc / มันไม่สามารถตอบสนองต่อการค้นหาอื่น ๆ สำหรับการเข้าสู่ระบบ
ในส่วนของฉัน sql ของฉันวางสายเมื่อฉันพยายามปิดในขณะที่ทำงานอย่างไม่มีที่สิ้นสุด สิ่งที่ฉันทำคือเปิดตัวจัดการงานของฉันและสิ้นสุดภารกิจการสืบค้น sql ของฉัน สิ่งนี้หยุด sql ของฉันและเริ่มต้นใหม่
คำตอบง่ายๆถ้าช่อง "หยุด" สีแดงไม่ทำงานคือให้ลองกดปุ่ม "Ctrl + Break" บนแป้นพิมพ์
หากคุณใช้ SQL Server บน Linux มีแอปที่คุณสามารถเพิ่มลงในซิสเต็มของคุณชื่อ "killall" เพียงคลิกที่ปุ่ม "killall" จากนั้นคลิกที่โปรแกรมที่ติดอยู่ในลูปและโปรแกรมจะยุติการทำงานของโปรแกรม หวังว่าจะช่วยได้
ฉันทุกข์ทรมานจากสิ่งเดียวกันมานานแล้ว มันเกิดขึ้นเป็นพิเศษเมื่อคุณเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล (ซึ่งอาจช้า) หรือคุณมีการเชื่อมต่อเครือข่ายที่ไม่ดี ฉันสงสัยว่า Microsoft รู้หรือไม่ว่าคำตอบที่ถูกต้องคืออะไร
แต่เนื่องจากฉันได้พยายามหาวิธีแก้ปัญหา วิธีการของฆราวาสเพียง 1 วิธีเท่านั้นที่ใช้ได้ผล
"กำลังดำเนินการค้นหาคุณต้องการยกเลิกการสืบค้นหรือไม่"
คลิกที่ "ใช่"
หลังจากนั้นไม่นานมันจะถามว่าคุณต้องการบันทึกแบบสอบถามนี้หรือไม่?
คลิกที่ "ยกเลิก"
และโพสต์สิ่งนั้นอาจเป็นเพราะสตูดิโอของคุณมีเสถียรภาพอีกครั้งในการดำเนินการค้นหาของคุณ
สิ่งที่ทำในพื้นหลังคือการยกเลิกการเชื่อมต่อหน้าต่างแบบสอบถามของคุณด้วยการเชื่อมต่อ ดังนั้นในการเรียกใช้แบบสอบถามอีกครั้งจะต้องใช้เวลาในการเชื่อมต่อเซิร์ฟเวอร์ระยะไกลอีกครั้ง แต่เชื่อฉันเถอะว่าการยอมแลกครั้งนี้ดีกว่าความทุกข์ทรมานจากการได้เห็นตัวจับเวลาซึ่งดำเนินไปชั่วนิรันดร์
PS:สิ่งนี้ใช้ได้กับฉันความรุ่งโรจน์ถ้าเหมาะกับคุณด้วย !!!