เป็นไปได้ไหมที่จะดูdelete
คำสั่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ในบันทึกธุรกรรม?
เป็นไปได้ไหมที่จะดูdelete
คำสั่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ในบันทึกธุรกรรม?
คำตอบ:
คุณจะไม่พบสคริปต์ที่ถูกเรียกใช้งานบน sql (ในบันทึกธุรกรรม)
บันทึกการทำธุรกรรมเป็นไฟล์ที่มีข้อมูลเกี่ยวกับการเปลี่ยนแปลงทุกอย่างที่เกิดขึ้นกับฐานข้อมูล ซึ่งรวมถึงการแก้ไขข้อมูล (ธุรกรรม) การแก้ไขฐานข้อมูลและการสำรองข้อมูล / คืนค่าเหตุการณ์
วัตถุประสงค์หลักที่บันทึกธุรกรรมคือการจัดเตรียมวิธีการที่สามารถกู้คืนฐานข้อมูลไปยังจุดในเวลาเมื่อจำเป็น ซึ่งอาจรวมถึงการย้อนกลับการทำธุรกรรมในเวลาที่กำหนดหรือเพื่อย้อนกลับการทำธุรกรรมจากการคืนค่าการสำรองข้อมูลเต็มรูปแบบ
เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับ Transaction log http://www.sqlservercentral.com/articles/Design+and+Theory/63350/
นี่คือสคริปต์เพื่อแสดงการสืบค้นที่ลบล่าสุด
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where dest.TEXT like '%Delete%from%'
ORDER BY deqs.last_execution_time DESC
FROM
เป็นคำหลักที่เป็นตัวเลือกในDELETE
คำสั่งดังนั้นฉันจะไม่รวมคำหลักนั้นในการจับคู่ที่ตรงนี้
delete
และDELETE
อื่น ๆ คุณอาจต้องการทำให้เป็นตำแหน่งที่ไม่ต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เช่น: WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
คุณสามารถดูแต่ละแถวที่ถูกลบโดยค้นหา LOP_DELETE_ROWS การดำเนินการยังคงอยู่ในบันทึก:
select * from fn_dblog(NULL, NULL)
where Operation = 'LOP_DELETE_ROWS'
หากบันทึกถูกรีไซเคิล (ในรูปแบบการกู้คืนอย่างง่าย) หรือถูกตัดทอนโดยการสำรองข้อมูล (ในรูปแบบการกู้คืนเต็มหรือจำนวนมาก) จากนั้นคุณจะสามารถเห็นการทำงานของบันทึกที่มีอยู่ในบันทึกเท่านั้น
การทำความเข้าใจกับบันทึกการทำงานนั้นค่อนข้างซับซ้อนคุณจำเป็นต้องตระหนักถึงสิ่งต่าง ๆ เช่นการเลิกทำหรือชดเชยการดำเนินการเพื่อให้เข้าใจถึงรูปแบบบันทึกที่คุณสามารถพบได้ แต่ DELETE ที่มุ่งมั่นไปข้างหน้านั้นค่อนข้างเข้าใจง่าย