執行 UPDATE 或 DELETE 忘記 WHERE 子句,或條件不精確導致資料誤損。前提:資料庫採用完整復原模式,且有近期的完整備份與交易記錄備份。
BACKUP LOG DatabaseName TO DISK = 'Path\LogBackup_AfterMistake.trn'
WITH NORECOVERY 保持資料庫處於還原狀態:
RESTORE DATABASE DatabaseName FROM DISK = 'Path\FullBackup.bak' WITH NORECOVERY
STOPAT 至誤操作前的時間點:
RESTORE LOG DatabaseName FROM DISK = 'Path\LogBackup_AfterMistake.trn'
WITH STOPAT = 'YYYY-MM-DD HH:MM:SS', NORECOVERY
RESTORE DATABASE DatabaseName WITH RECOVERY
所有上述指令均可在 SQL Server 企業管理器「還原資料庫」精靈中完成:選取備份裝置、指定時間點、勾選「保持資料庫不可運作狀態」等。
TRUNCATE TABLE:非記錄操作,無法時間點還原。SELECT INTO:最小記錄操作,同樣無法精確還原。