當前位置:首頁 » 編程語言 » sql日誌恢復工具
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql日誌恢復工具

發布時間: 2022-01-30 04:01:45

『壹』 sql server 資料庫誤刪,有日誌文件如何還原

恢復條件
1.資料庫是完整恢復模式.
2.誤操作以來未日誌截斷.那麼,使用Log
Explorer導出反誤操作的SQL腳本.

『貳』 如何從資料庫的完整日誌模式還原誤刪除的數據

從資料庫的完整日誌模式還原誤刪除的數據的解決辦法

  • SQL Server中誤刪除數據的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件:

  • 1. 至少有一個誤刪除之前的資料庫完全備份。

  • 2. 資料庫的恢復模式(Recovery mode)是「完整(Full)」。

  • 針對這兩個前提條件,會有三種情況:

  • 情況一、如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復(參考文章),無需藉助第三方工具。

  • a) 備份當前資料庫的事務日誌:BACKUP LOG [資料庫名] TO disk= N'備份文件名' WITH NORECOVERY

  • b) 恢復一個誤刪除之前的完全備份:RESTORE DATABASE [資料庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, REPLACE

  • c) 將資料庫恢復至誤刪除之前的時間點:RESTORE LOG [資料庫] FROM DISK = N'第一步的日誌備份文件名' WITH STOPAT = N'誤刪除之前的時間點' , RECOVERY

  • 情況二、如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。

  • 情況三、如果第2個前提條件不存在,無法恢復。所以,一定要將資料庫恢復模式設置為「完整(Full)」。

  • 我現在面臨的是第二種情況,需要找第三方工具。

  • 開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。

  • 後來找的是SQL Log Rescue,也不支持SQL Server 2008。

  • 接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購買,Demo版並沒有數據恢復功能。

  • 最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業軟體,需要購買,但Demo版可以恢復數據,只要資料庫文件不超過24Gb。幸好朋友的資料庫文件不大,用它完成了誤刪除數據的恢復。

  • 下面分享一下用Recovery for SQL Server進行恢復的操作步驟:

  • 1. 運行Recovery for SQL Server

  • 2. 點擊菜單中的 File > Recover,選擇要恢復的資料庫的數據文件(.mdf)

  • 3. Next > Next,進入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日誌中恢復誤刪除的數據)。

  • 4. Next 進入 Recovery options 窗口,選中 Search for deleted records,並選擇要恢復的資料庫的日誌文件路徑(log file path)。

  • 5. Next 並選擇目標文件夾(Destination folder),用於存放恢復過程中生成的SQL語句與bat文件。

  • 6. 點擊Start,開始恢復操作(在上一步選擇的目標文件夾中生成相應的SQL文件與Bat文件),然後,出現 SQL Server Database Creation Utility 窗口。

  • 7. Next,選擇被恢復數據存放的目標資料庫。

  • 8. Next, 選擇 Import availiable data from both database and log files

  • 9. Next, Next, 然後就完成數據的恢復!

小剛SEO為你解答

『叄』 十萬火急!sql誤刪數據,如何從日誌文件恢復

看看這個,希望對你有幫助2樓
http://topic.csdn.net/t/20051016/08/4329162.html

『肆』 根據日誌恢復sql資料庫~~急!!!!!!!!

恐怕是沒有,關注.

『伍』 sqlserver 如何通過日誌進行數據恢復

目前SqlServer沒有單表恢復,相對於oracle確實是一個不太方便的事情。
你可以將數據恢復到一個新資料庫,然後將誤刪的數據插入到目前A表中,這樣就不會影響其他數據了。

『陸』 如何使用事務日誌恢復SQL Server資料庫

大多數資料庫管理員都害怕聽說要將資料庫恢復到某個時間點,特別是在資料庫為生產資料庫的情況下。但是,了解如何恢復資料庫是資料庫管理員技能背景中一個至關重要的組成部分。本文將說明如何把一個SQL Server資料庫回復到恢復一個數據表的時候。
https://www.cnblogs.com/zhongsh/archive/2013/10/01/3348446.html

『柒』 華信SQL SERVER日誌恢復工具怎麼樣

--恢復Master--方法1:重裝SQL,但是數據就Over掉了--方法2:重建MasterRebuildm.exe用到SQL的安裝文件,--從安裝目錄X86\Data中拷取原文件--重建成功後,不要啟動SQLServer,以單用戶模式進入SQL--SQLserver的安裝目錄\bin\sqlservr.exe-m--還原資料庫備份restoredatabasemasterfromdisk='e:\master.bak'--恢復Master--啟動SQLSERVERsp_admpdevice'disk',Mas,'E:\Master.bak'--CuttheMasterdb--rebuildm.exe--Sqlservr.exe-='e:\master.bak'如果是Model資料庫損壞,具體過程為:先重建Master資料庫,再恢復Model資料庫的備份;MSDB的損壞不影響SQLServer的正常運行,備份還原和用戶資料庫相同TempDB:SQLServer每次啟動的時候,都會使用Model資料庫重建,不用備份

『捌』 sql中的數據,用delete刪除了,用什麼軟體進行恢復

這個基本上很難實現了,那些恢復軟體只能處理刪除系統中的文件,但是資料庫的刪除操作是在文件內部的,很難控制,有可能資料庫在進行其他讀寫的時候將刪除的數據空間給回收了,所以這樣就會被新數據覆蓋
即時沒有被覆蓋,資料庫通常不會執行一個真正的刪除操作,而是在刪除記錄的位置放置一個失效標記,便於以後的回收,這個策略是處於效率上的考慮。但是雖說記錄還在,但是這種恢復是非常難以實現的,需要了解資料庫存儲文件的格式才有希望做到。據說oracle有這類軟體,但是是付費的。

『玖』 SQL SERVER 只有ldf日誌文件怎麼恢復數據

  1. 參考下列說明:

  2. /*--說明:
    下面的代碼演示了如何利用日誌還原功能,將主資料庫中的數據變化及時反饋到備用資料庫中
    備用資料庫的數據可以隨時用於查詢,但不能被更新(備用資料庫只讀)。
    --*/
    --首先,創建一個演示用的資料庫(主資料庫)
    CREATE DATABASE Db_test
    ON
    ( NAME = Db_test_DATA,
    FILENAME = 'c:Db_test.mdf' )
    LOG ON
    ( NAME = Db_test_LOG,
    FILENAME = 'c:Db_test.ldf')
    GO
    --對資料庫進行備份
    BACKUP DATABASE Db_test TO DISK='c: est_data.bak' WITH FORMAT
    GO
    --把資料庫還原成備用資料庫(演示主資料庫與這個備用資料庫之間的同步)
    RESTORE DATABASE Db_test_bak FROM DISK='c: est_data.bak'
    WITH REPLACE,STANDBY='c:db_test_bak.ldf'
    ,MOVE 'Db_test_DATA' TO 'c:Db_test_data.mdf'
    ,MOVE 'Db_test_LOG' TO 'c:Db_test_log.ldf'
    GO
    --啟動 SQL Agent 服務
    EXEC master..xp_cmdshell 'net start sqlserveragent',no_output
    GO
    --創建主伺服器數據訓與備用伺服器資料庫之間同步的作業
    DECLARE @jogid uniqueidentifier
    EXEC msdb..sp_add_job
    @job_id = @jogid OUTPUT,
    @job_name = N'數據同步處理'
    --創建同步處理步驟
    EXEC msdb..sp_add_jobstep
    @job_id = @jogid,
    @step_name = N'數據同步',
    @subsystem = 'TSQL',
    @command = N'
    --主資料庫中進行日誌備份
    BACKUP LOG Db_test TO DISK=''c: est_log.bak'' WITH FORMAT
    --備用資料庫中還原主資料庫的日誌備份(應用主資料庫中的最新變化
    --實際應該時主資料庫備份與備用資料庫的還原作業應該分別在主伺服器和備用伺服器上建立,並且備份文件應該放在主伺服器和備用都能訪問的共享目錄中
    RESTORE LOG Db_test_bak FROM DISK=''c: est_log.bak'' WITH STANDBY=''c: est_log.ldf''',
    @retry_attempts = 5,
    @retry_interval = 5
    --創建調度(每分鍾執行一次)
    EXEC msdb..sp_add_jobschele
    @job_id = @jogid,
    @name = N'時間安排',
    @freq_type=4,
    @freq_interval=1,
    @freq_subday_type=0x4,
    @freq_subday_interval=1,
    @freq_recurrence_factor=1
    -- 添加目標伺服器
    EXEC msdb.dbo.sp_add_jobserver
    @job_id = @jogid,
    @server_name = N'(local)'
    GO
    --通過上述處理,主資料庫與備用資料庫之間的同步關系已經設置完成
    --下面開始測試是否能實現同步
    --在主資料庫中創建一個測試用的表
    CREATE TABLE Db_test.dbo.TB_test(ID int)
    GO
    --等待1分鍾30秒(由於同步的時間間隔設置為1分鍾,所以要延時才能看到效果)
    WAITFOR DELAY '00:01:30'
    GO
    --查詢一下備用資料庫,看看同步是否成功
    SELECT * FROM Db_test_bak.dbo.TB_test
    /*--結果:
    ID
    -----------
    (所影響的行數為 0 行)
    --*/
    --測試成功
    GO
    --最後刪除所有的測試
    DROP DATABASE Db_test,Db_test_bak
    EXEC msdb..sp_delete_job @job_name=N'數據同步處理'
    GO
    /*===========================================================*/
    /*--伺服器檔機處理說明
    使用這種方式建立的資料庫同步,當主資料庫不可用時(例如,主資料庫損壞或者停機檢修)
    可以使用以下兩種方法使備用資料庫可用。
    --*/
    --1. 如果主資料庫損壞,無法備份出最新的日誌,可以直接使用下面的語句使備用資料庫可讀寫(丟失最近一次日誌還原後的所有數據)。
    --RESTORE LOG Db_test_bak WITH RECOVERY
    --2. 如果主資料庫可以備份出最新日誌,則可以使用下面的語句。
    --先備份主資料庫的最新的事務日誌
    --BACKUP LOG Db_test TO DISK=''c: est_log.bak'' WITH FORMAT
    --再在備用資料庫中恢復最新的事務日誌,並且使備用資料庫可讀寫(升級為主資料庫)
    --RESTORE LOG Db_test_bak FROM DISK='c: est_log.bak'
    簡單地說:
    你的sql服務要使用指定的windows用戶登陸, 而不能使用"本地系統帳戶"
    用於登陸sql服務的用戶要求對共享目錄具有所有許可權
    如果你的電腦沒有加入到域, 還必須保證源和目標伺服器的sql服務設置的登陸用戶是一樣的(用戶名和密碼都一樣)
    網路備份主要是許可權設置問題, 參考下面的備份文件共享目錄許可權設置方法去解決目錄的共享許可權就可以了
    下面假設是假設A伺服器上的資料庫備份到B伺服器上的共享目錄許可權設置(兩台伺服器應該在區域網內,允許目錄共享訪問)::
    機器A,B創建一個同名的windows用戶,用戶組設置為administrators,並設置相同的密碼,做為備份文件夾文件夾的有效訪問用戶,操作:
    我的電腦
    --控制面板
    --管理工具
    --計算機管理
    --用戶和組
    --右鍵用戶
    --新建用戶
    --建立一個隸屬於administrator組的登陸windows的用戶
    在B機器器上,新建一個共享目錄,做為備份文件的存放目錄,操作:
    我的電腦--D: 新建一個目錄,名為: BAK
    --右鍵這個新建的目錄
    --屬性--共享
    --選擇"共享該文件夾"
    --通過"許可權"按紐來設置具體的用戶許可權,保證第一步中創建的用戶具有對該文件夾的所有許可權
    --確定
    設置 MSSQLSERVER 及 SQLSERVERAGENT 服務的啟動用戶
    開始--程序--管理工具--服務
    --右鍵 MSSQLSERVER
    --屬性--登陸--選擇"此賬戶"
    --輸入或者選擇第一步中創建的windows登錄用戶名
    --"密碼"中輸入該用戶的密碼
    --確定
    --同樣的方法設置 SQLSERVERAGENT
    在A機器上完成對B機器BAK目錄的映射
    查詢分析器中執行下面的語句,檢驗是否成功:
    exec master..xp_cmdshell 'dir 映射的盤符'
    A伺服器上做備份計劃
    備注:創建一個新的用戶只是為了讓MSSQLSERVER服務的啟動帳戶與共享目錄的有效訪問同名且密碼相同,這樣才能通過驗證(所以你也可以用其他有效的用戶來代替,只需要滿足用戶名和密碼相同,並且擁有足夠的許可權)

『拾』 如何恢復丟失的SQL Server日誌文件

在實際操作中SQLServer日誌文件丟失是一件令人十分頭疼的事情,以下的文章主要是針對這一問題給出的答案,以下就是正文的主要內容描述。 一、 概述 在應用系統中,資料庫往往是最核心的部分,一旦資料庫毀壞或損壞,將會帶來巨大的損失,所以資料庫的管理越來越重要。我們在做資料庫管理與維護工作中,不可避免會出現各種各樣的錯誤,本文針對資料庫的SQLServer日誌文件丟失時如何利用MDF文件恢復資料庫的方法進行了研究。 二、 資料庫的恢復 當資料庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復資料庫?我們把SQL Server的日誌文件分為兩類:一類是無活動事務的日誌,另一類是含活動事務的日誌,根據不同的日誌,採取不同的方法來恢復資料庫。 1. 無活動事務的日誌恢復 無活動事務的日誌丟失時,我們很容易利用MDF文件直接恢復資料庫,具體方法如下: ①.分離被質疑的資料庫,可用企業管理器中的"分離資料庫工具",或者用存儲過程sp_detach_db分離資料庫; ②利用MDF文件附加資料庫生成新的日誌文件,可用企業管理器中的"附加資料庫"的工具,或者用存儲過程sp_attach_single_file_db附加資料庫。 如果資料庫的日誌文件中含有活動事務,利用此方法就不能SQLServer日誌文件丟失的恢復資料庫。 2. 含活動事務的日誌恢復 含有活動事務的日誌丟失時,利用上述方法就會出現"資料庫和日誌文件不符合,不能附加資料庫"。對於這種情況下,我們採用如下方法: ①新建同名資料庫AAA,並設它為緊急模式 停止SQL Server伺服器; 把資料庫主數據MDF文件移走; 啟SQL Server伺服器,新建一個同名的資料庫AAA; 停止SQL Server伺服器,把移走的MDF文件再覆蓋回來; 啟動SQL Server伺服器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可: Use MasterGosp_configure 』allow updates』,1 reconfigure with override Go 接著運行以下語句,把AAA資料庫設為緊急模式,即把Sysdatabases表中AAA資料庫的status屬性設為』37268』,就表示把AAA資料庫處於緊急模式。 update sysdatabases set status=32768 where hame=』AAA』 如果沒有報告什麼錯誤,就可以進行以下操作。 ②設置資料庫AAA為單用戶模式,並檢查資料庫 重啟SQL Server伺服器; 把資料庫AAA設為單用戶模式 Sp_dboption 』AAA』, 』single user』, 』true』 運行以下語句,檢查資料庫AAA DBCC CHECKDB(』AAA』) 如果沒有什麼大的問題就可以把資料庫的狀態改回去。 ③還原資料庫的狀態 運行以下語句,就可以把資料庫的狀態還原: update sysdatabases set status=28 where name=』AAA』 sp_configure 』allow updates』,0 Go 如果沒有什麼大的問題,刷新一下資料庫,資料庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的資料庫仍不能工作,還要進行下面的處理,才能真正恢復。 ④利用DTS的導入導出向導,把資料庫AAA導入到一個新建資料庫BBB中 新建一個資料庫BBB; 右擊BBB,選擇IMPORT功能,打開導入向導; 目標源選擇"在SQL Server資料庫之間復制對象和資料庫",這樣可以把表結構,數據視圖和存儲過程導入到BBB中 再用此功能把BBB庫替換成原來的AAA庫即可。 到此為止,資料庫AAA就完全恢復。 SQLServer日誌文件丟失是一件非常危險的事情,很有可能你的資料庫徹底毀壞。SQL Server資料庫的恢復都是靠日誌文件來完成,所以無論如何都要保證日誌文件的存在,它至關重要。為了使我們的資料庫萬無一失,最好採用多種備份方式相結合,所以我們要從心裡重視資料庫的管理與維護工作。