ห้ามรีสตาร์ทเซิร์ฟเวอร์ SQL วิธีนี้จะช่วยยืดอายุความเจ็บปวดของคุณเนื่องจากการกู้คืนจะเกิดขึ้นซึ่งจะย้อนกลับหรือทำซ้ำธุรกรรมใด ๆ ที่ไม่เสร็จสมบูรณ์รวมถึงการลบของคุณ
การฆ่าเซสชันที่ใช้การลบจะส่งผลให้เกิดการย้อนกลับซึ่งจะใช้เวลานานกว่าจะเสร็จสมบูรณ์
คุณต้องการดูแบบสอบถามต่อไปนี้เพื่อดูสถานะของการดำเนินการ:
SELECT des.session_id
, des.host_name
, des.login_name
, der.command
, der.estimated_completion_time
, der.blocking_session_id
, der.last_wait_type
, der.percent_complete
, der.start_time
, der.status
, der.wait_resource
, der.wait_type
, der.wait_time
FROM sys.dm_exec_sessions des
INNER JOIN sys.dm_exec_requests der ON des.session_id = der.session_id
WHERE des.session_id <> @@SPID
AND des.is_user_process = 1
ORDER BY des.session_id;
percent_complete
คอลัมน์และผู้ที่พึ่งพาได้เช่นestimated_completion_time
มีประชากรเพียงสำหรับการดำเนินการดังต่อไปนี้:
ALTER INDEX REORGANIZE
AUTO_SHRINK option with ALTER DATABASE
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE ENCRYPTION
ดังนั้นคุณจะเห็นว่าคอลัมน์นั้นมีความหมายถ้าคุณได้ยกเลิกคำสั่งลบแล้วและมันกำลังย้อนกลับหรือถ้าคุณรีสตาร์ท SQL Server แล้วและอยู่ในระหว่างการกู้คืน
หากblocking_session_id
คอลัมน์มีตัวเลขแสดงว่าเซสชันอื่นกำลังบล็อกการดำเนินการลบ หากเซสชันนั้นบล็อกการดำเนินการลบตั้งแต่เริ่มต้นคุณอาจสามารถยกเลิกการดำเนินการได้โดยไม่ต้องย้อนกลับใด ๆ