sql:回滾事務日誌檔案中的事務問:怎樣使用transact-sql回滾某個位於事務日誌檔案中的事務(例如,id 0000:0010a183)?
答:出於預防資料錯誤的考慮,sql server並不支援個別事務的回滾。舉例來說,假設兩個事務t1和t2使用現金餘額域。t1新增了500美金,t2使用更新後的值進行了某個操作。如果回滾t1,則t2可能是錯誤的。但是,您可以使用時間戳或事務日誌標記將日誌恢復至預定義的標記或時間點。以下兩個例子說明了如何使用sql server 2000語法。
例1:使用時間戳將日誌進行時點恢復
使用以前的完全備份恢復資料庫,並使其為日誌恢復做好準備。
restore database pubs from disk = n'c:\backups\fullbackup.bak' with norecovery
現在您可以將日誌前滾到合適的時間點,並使資料庫可供使用。請注意,stopat在資料庫正在執行大容量日誌時禁止執行。
restore log pubs from disk=n'c:\backups\logbackup.bak' with recovery,stopat='02/11/2002 17:35:00'
例2:使用資料庫標記將日誌恢復到預定義時間點的語句
在事務日誌中置入乙個標記。請注意,被標記的事務至少須提交乙個更新,以標記該日誌。
begin tran mymark with mark
update pubs.dbo.lastlogmark set marktime = getdate()
commit tran mymark
按照您常用的方法備份事務日誌。
backup log pubs to disk='c:\backups\fullbackup.bak' with init
現在您可以將資料庫恢復至日誌標記點。首先恢復資料庫,並使其為接受日誌恢復做好準備。
restore database pubs from disk=n'c:\backups\fullbackup.bak' with norecovery
現在將日誌恢復至包含該標記的時間點,並使其可供使用。請注意,stopat在資料庫正在執行大容量日誌時禁止執行。
restore log pubs from disk=n'c:\backups\logbackup.bak' with recovery,
stopat='02/11/2002 17:35:00'
—microsoft sql server 開發團隊
Mysql mysqlbinlog 日誌回滾誤操作
三種模式是個人理解,有誤解的地方,望指正 日誌檔案路徑一般在資料庫資料存放資料夾 usr local mysql bin mysqlbinlog no defaults database cdpf dbtest base64 output decode rows v usr local mysql ...
mysql回滾日誌
一 回滾日誌 undo log 1 作用 儲存了事務發生之前的資料的乙個版本,可以用於回滾,同時可以提供多版本併發控制下的讀 mvcc 也即非鎖定讀 2 內容 邏輯格式的日誌,在執行undo的時候,僅僅是將資料從邏輯上恢復至事務之前的狀態,而不是從物理頁面上操作實現的,這一點是不同於redo log...
SQL事務回滾
ben begin transaction 開始乙個事務 commit transaction 提交事務 rollback transaction 回滾事務。其中commit transaction 與rollback transaction 都必須有對應的begin transaction 才能正...