Sql-Server

所有數據都被刪除或截斷 - 發生了什麼?

  • November 3, 2020

有哪些方法可以知道 1 億行記錄表是如何被清除的。數據庫處於完全恢復模式。我不確定日常備份是如何進行的,但在截斷或刪除發生之前,它是 50 GB,現在降至 4 GB。

猜猜我的問題是。

  1. 如何有效並立即找出是什麼查詢引起的?
  2. 以後如何避免?在機器上執行 SQL 審計會有幫助嗎?

謝謝

不幸的是,如果沒有在操作之前進行某種審計設置,就沒有簡單的方法來確定使用的 DML 命令。

您可以通過查看事務日誌以查看頁面是否已釋放或行數據是否已寫入日誌來推斷該操作是 aDELETE還是 a 。TRUNCATE如果 trnasaction 日誌顯示頁面已被釋放,您可以確定該表已被截斷。

如果您在刪除發生時在伺服器上執行 SQL Server 跟踪或擴展事件會話,並且該跟踪/會話正在擷取 DML 語句,您將能夠準確地看到發生了什麼。

可能更重要的考慮因素是確保您有一個為業務服務的恢復點目標,方法是限制在不發生可用於恢復的備份的情況下可以經過的時間量。因此,通過完全恢復,您可以每 5 分鐘執行一次日誌備份,這意味著您可以將表恢復到刪除發生之前的某個時間點。

Paul Randal 的這篇部落格文章有一個很好的檢查日誌備份的教程。

引用自:https://dba.stackexchange.com/questions/221961