Ⅰ 資料庫被怎麼通過log日誌恢復資料庫
從日誌回復資料庫 :自己一步一步按照說明試著看
--創建測試資料庫
CREATE DATABASE Db
GO
--對資料庫進行備份
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
GO
--創建測試表
CREATE TABLE Db.dbo.TB_test(ID int)
--延時1秒鍾,再進行後面的操作(這是由於SQL Server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗)
WAITFOR DELAY '00:00:01'
GO
--假設我們現在誤操作刪除了 Db.dbo.TB_test 這個表
DROP TABLE Db.dbo.TB_test
--保存刪除表的時間
SELECT dt=GETDATE() INTO #
GO
--在刪除操作後,發現不應該刪除表 Db.dbo.TB_test
--下面演示了如何恢復這個誤刪除的表 Db.dbo.TB_test
--首先,備份事務日誌(使用事務日誌才能還原到指定的時間點)
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
GO
--接下來,我們要先還原完全備份(還原日誌必須在還原完全備份的基礎上進行)
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
GO
--將事務日誌還原到刪除操作前(這里的時間對應上面的刪除時間,並比刪除時間略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --獲取比表被刪除的時間略早的時間
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO
--查詢一下,看錶是否恢復
SELECT * FROM Db.dbo.TB_test
Ⅱ 如何通過sql日誌,查看以前執行過的sql語句
如果你的資料庫是完全恢復模式的話,可以通過log Explorer,查看。
具體使用搜索一下就成。
使用Log Explorer查看和恢復數據
Log Explorer 4.1.可用於SQL Server2005的日誌查看工具
使用方法:
打開Log Explorer -> Attach Log File -> 選擇SQL Server伺服器和登陸方式 -> Connect ->
在Database Name中選擇資料庫 -> Attach-> 左面對話框中Browse-> View Log-> 就可以看到log記錄了
想恢復的話: 右鍵Log記錄 Undo Transation-> 選擇保存文件名和路徑-> 然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table ....
然後將此insert table的代碼放到查詢分析器里執行.就可以恢復數據.
----------------------------------------------------------------------
--如何恢復被delete/update的數據
----------------------------------------------------------------------
1連接到被刪除資料庫的Db
打開log explorer 選擇 "file"->"attach log file"->選擇伺服器和登陸方式->"connect"->選擇"資料庫"->"attach"
2 查看日誌
在左面操作項目的對話框中選擇"browse"項目->"view log"->就可以看到當前的Log記錄了
3 恢復數據
右鍵某一條log記錄,選擇"undo transation"->"選擇保存文件名和路徑"->然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如: 如果log是delete table where ...的話,生成的文件代碼就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢復被drop table和truncate table後的數據
----------------------------------------------------------------------
1 連接到被刪除資料庫的Db
操作同上
2 恢復方法
1) 選擇"salvaage dropped/truncate"菜單,在右邊的對話框中選擇表名,和droped/trucated的日期,
File Name中選擇生成insert語句腳步的存放位置,condition選擇是droped還是truncated,
最後點擊"create" 就會生成insert語句,把生成的語句到查詢分析器裡面執行一下就可以了
2) 選擇"ViewDDL Commands"菜單->選"truncate table" 操作項->點擊"Salvage"->生成語句->查詢分析器里執行
----------------------------------------------------------------------
--log explorer使用的幾個問題
----------------------------------------------------------------------
1) 對資料庫做完全/差異/日誌備份
備份時如果選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,就能看到原來的日誌並做恢復
2) 修改了其中一個表中的部分數據,此時用Log explorer看日誌,可以作日誌恢復
3) 然後恢復備份,(注意:恢復是斷開log explorer與資料庫的連接,或連接到其他數據上,
否則會出現資料庫正在使用無法恢復)
恢復完後,再打開log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日誌記錄,所以無法做恢復.
4) 不要用SQL的備份功能備份,搞不好你的日誌就破壞了.
正確的備份方法是:
停止SQL服務,復制數據文件及日誌文件進行文件備份.
然後啟動SQL服務,用log explorer恢復數據
Ⅲ SQL Server通過日誌恢復數據
如果以前做過完來整備份,自現在有日誌備份,是可以恢復的。
把以前的完整備份找到,以及完整備份之後的所有的日誌備份,再對當前進行一次日誌備份,
然後,還原完整備份,使用with norecovery 選項,
再一個個的還原日誌備份,也是使用with norecovery 選項,
最後,對當前的日誌備份進行還原,選擇還原到什麼時間點,或是什麼事務(如果能知道),這樣就可以了。
Ⅳ mysql資料庫怎樣用日誌恢復數據sql語句
要想從二進制日誌恢復數據,你需要知道當前二進制日誌文件的路徑和文件名。一般可以從選項文件(即my.cnf or my.ini,取決於你的系統)中找到路徑。如果未包含在選項文件中,當伺服器啟動時,可以在命令行中以選項的形式給出。啟用二進制日誌的選項為-- log-bin。要想確定當前的二進制日誌文件的文件名,輸入下面的MySQL語句:
SHOW BINLOG EVENTS /G
你還可以從命令行輸入下面的內容:
mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS /G'
將密碼my_pwd替換為伺服器的root密碼。
1. 指定恢復時間
對於MySQL 4.1.4,可以在mysqlbinlog語句中通過--start-date和--stop-date選項指定DATETIME格式的起止時間。舉例說 明,假設在今天上午10:00(今天是2006年4月20日),執行SQL語句來刪除一個大表。要想恢復表和數據,你可以恢復前晚上的備份,並輸入:
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 /
mysql -u root -pmypwd
該命令將恢復截止到在--stop-date選項中以DATETIME格式給出的日期和時間的所有數據。如果你沒有檢測到幾個小時後輸入的錯誤的SQL語句,可能你想要恢復後面發生的活動。根據這些,你可以用起使日期和時間再次運行mysqlbinlog:
mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 /
mysql -u root -pmypwd /
在該行中,從上午10:01登錄的SQL語句將運行。組合執行前夜的轉儲文件和mysqlbinlog的兩行可以將所有數據恢復到上午10:00前一秒鍾。你應檢查日誌以確保時間確切。
Ⅳ 怎麼用SQL 2000 的管理日誌恢復資料庫
補充:使用「查詢分析器」去輸入。
以下供參考,本人不會!
重要的操作,本人一般都會做備份的,呵呵。
[[[[[[此外在BACKUP目錄下可能存在以UNDO_打頭的文件,可以用以撤消你的「還原」操作]]]]]
問:怎樣使用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'
Ⅵ sql 資料庫事物日誌可以恢復嗎
恢復過程來
以資料庫恢復模式設為FULL為例:自
恢復過程的第一步是執行尾日誌備份,(BACKUP LOG Student TO DISK='E:\stulog.dmp' ) 。
在恢復一個資料庫之前,為保證上次備份之後發生改變的記錄都包含在恢復過程之中,需要執行這種類型的備份。
下一步,查找資料庫備份文件在機器或網路中的存儲位置。
如果要在另一台伺服器上恢復資料庫,最好是把這些文件復制到目標伺服器中。在備份文件所在的位置,找出最後一個完整的資料庫備份(這些文件通常使用.bak為擴展名);恢復這個完整的備份。
Ⅶ 如何使用事務日誌恢復SQL Server資料庫
但是,了解如何恢復資料庫是資料庫管理員技能背景中一個至關重要的組成內部分。本文將說明如容何把一個SQL Server資料庫回復到恢復一個數據表的時候。情況介紹update或delete語句忘帶了where子句,或where子句精度不夠,執行之後造成了嚴重的後果,
這種情況的數據恢復只能利用事務日誌的備份來進行,所以如果你的SQL沒有進行相應的全庫備份
或不能備份日誌(如果為了不讓日誌文件變大而置trunc. log on chkpt.選項為1),那麼就無法進行數據的恢復了,或者只能恢復到最近一次的備份的數據了。恢復過程注意,在本文中,我假定你的資料庫恢復模式設為FULL。恢復過程的第一步是執行尾日誌備份,(BACKUP LOG Student TO DISK='E:\stulog.dmp' ) 。