ดูคำสั่งลบในบันทึกธุรกรรม


12

เป็นไปได้ไหมที่จะดูdeleteคำสั่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ในบันทึกธุรกรรม?


ข้อความสั่งนั้นไม่ได้ถูกบันทึกไว้ในบันทึกการทำธุรกรรม ฐานข้อมูลของคุณแบบจำลองการกู้คืนคืออะไร? คำตอบนี้อาจเป็นประโยชน์
Martin Smith

คำตอบ:


11

คุณจะไม่พบสคริปต์ที่ถูกเรียกใช้งานบน 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

FYI: FROMเป็นคำหลักที่เป็นตัวเลือกในDELETEคำสั่งดังนั้นฉันจะไม่รวมคำหลักนั้นในการจับคู่ที่ตรงนี้
Jon Seigel

จริงคำสั่งจากในลบเป็นตัวเลือกฉันเก็บไว้เพียงเพื่อ จำกัด ผลลัพธ์ของการสืบค้นของฉัน แต่ใช่คุณพูดถูก
AmmarR

หมายเหตุสำหรับอินสแตนซ์ของเซิร์ฟเวอร์ SQL ที่คำนึงถึงตัวพิมพ์เล็ก - ใหญ่โค้ดข้างต้นจะหายไปdeleteและDELETEอื่น ๆ คุณอาจต้องการทำให้เป็นตำแหน่งที่ไม่ต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เช่น: WHERE dest.text LIKE '%DELETE %' COLLATE Latin1_General_CI_AS
Max Vernon

11

คุณสามารถดูแต่ละแถวที่ถูกลบโดยค้นหา LOP_DELETE_ROWS การดำเนินการยังคงอยู่ในบันทึก:

select * from fn_dblog(NULL, NULL) 
where Operation = 'LOP_DELETE_ROWS'

หากบันทึกถูกรีไซเคิล (ในรูปแบบการกู้คืนอย่างง่าย) หรือถูกตัดทอนโดยการสำรองข้อมูล (ในรูปแบบการกู้คืนเต็มหรือจำนวนมาก) จากนั้นคุณจะสามารถเห็นการทำงานของบันทึกที่มีอยู่ในบันทึกเท่านั้น

การทำความเข้าใจกับบันทึกการทำงานนั้นค่อนข้างซับซ้อนคุณจำเป็นต้องตระหนักถึงสิ่งต่าง ๆ เช่นการเลิกทำหรือชดเชยการดำเนินการเพื่อให้เข้าใจถึงรูปแบบบันทึกที่คุณสามารถพบได้ แต่ DELETE ที่มุ่งมั่นไปข้างหน้านั้นค่อนข้างเข้าใจง่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.