當前位置:首頁 » 數據倉庫 » 資料庫日誌恢復模式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫日誌恢復模式

發布時間: 2022-05-16 20:21:42

❶ 急求!sql2005資料庫數據覆蓋,如何 使用日誌恢復資料庫


使用日誌恢復資料庫
是幾個條件,
首先,資料庫是完整恢復模式
其次,以前做過完整備份
再次,在做過完整備份後,沒有清過日誌
滿足條件後,可以如下操作,
1、備份一個當前的資料庫日誌,
2、用完備恢復,with
norecovery
3、依次恢復以前備份的日誌文件(不包含本次備份的)
with
norecovery
4、使用本次備份的日誌文件,使用stop
at
,恢復到覆蓋前的時間點。

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

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

❸ SQL server資料庫日誌滿了怎麼處理

一、刪除日誌文件。

二、手動收縮。操作如下:

1、在資料庫頁面中選擇「選項」;

❹ SQLServer2008資料庫怎樣備份還原和數據恢復

在完整恢復模式或大容量日誌恢復模式下,必須先備份活動事務日誌(稱為日誌尾部),然後才能在SQLServerManagementStudio中還原資料庫。有關詳細信息,請參閱如何備份事務日誌(SQLServerManagementStudio)。若要還原已加密的資料庫,您必須有權訪問用於加密資料庫的證書或非對稱密鑰。如果沒有證書或非對稱密鑰,資料庫將無法還原。

認識資料庫備份和事務日誌備份

資料庫備份與日誌備份是資料庫維護的日常工作,備份的目的是在於當資料庫出現故障或者遭到破壞時可以根據備份的資料庫及事務日誌文件還原到最近的時間點將損失降到最低點。

資料庫備份

資料庫備份可以手動備份和語句備份

一.手動備份資料庫

1.滑鼠右鍵選擇你要進行備份的資料庫-任務-備份

可以在常規選項頁面你可以選擇備份類型是進行完整資料庫備份還是差異資料庫備份

2.點擊添加選項,選擇資料庫文件的存放路徑

注意文件名記得加後綴.bak,便於恢復時的查找

3.你還可以在選項頁面是追加到現有的備份集,還是覆蓋所有的現有備份集,還可以選擇備份驗證完整性(建議選擇),還可以選擇是否壓縮備份等。

二.語句備份資料庫

use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

資料庫日誌備份

首先需要注意,資料庫日誌的備份是基於資料庫完整備份,也就是說你備份資料庫日誌之前你首先要先對資料庫進行一次完整的備份,因為之間會涉及到堅持到檢查點 lsn, 這也是本文接下來要講的重點。

一.手動備份資料庫日誌

1.右鍵資料庫-任務-備份-選擇備份類型(事務日誌)

2.點添加,添加日誌文件備份存儲路徑

3.同資料庫完整備份一樣,你也可以選擇覆蓋現有備份集或者追加到現有備份集,這里現在覆蓋現有備份集、驗證完整性,然後確認備份

二.語句備份資料庫事務日誌

BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事務日誌 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

資料庫還原

右鍵資料庫-還原資料庫-添加需要進行還原的資料庫文件路徑

在還原源選項中你可以選擇『源資料庫』,『源設備』。1.選擇源資料庫工具會自動顯示該資料庫之前的一些備份,然後直接選擇需要還原的資料庫備份集。

2.選擇源設備點擊後面的...,添加需要還原的資料庫文件

2.點擊確認還原資料庫

資料庫恢復

資料庫恢復的前提是1.一個完整的資料庫備份2.包含這個完整資料庫備份的事務日誌備份3.完整備份之間也可以存在數個差異備份

對於資料庫維護空間始終是一個比較頭疼的問題,特別是對於大型資料庫而言,每天的日誌文件增長是龐大的,很多資料庫管理員會定時對資料庫日誌文件進行收縮,但是經常收縮會存在收縮完日誌文件還是不能減少,這是因為存在很多活動的日誌無法收縮可以用

DBCC LOGINFO('資料庫名稱')

我們看到
status=0的日誌,代表已經備份到磁碟的日誌文件;而
status=2的日誌還沒有備份。當我們收縮日誌文件時,收縮掉的空
間其實就是
status=0的空間,如果日誌物理文件無法減小,這里一
定能看到非常多status=2的記錄

解決辦法:1.可以分離要收縮的資料庫,然後手動刪除日誌文件,然後附加資料庫,資料庫就會產生一個很小的日誌文件(不推薦使用這種方法)

2.右鍵要出來的資料庫選擇「屬性」-"選項",將恢復模式改成"簡單",然後利用收縮工具可以講日誌文件收縮到很小,收縮完記得講恢復模式改成"完整"

也可以用語句進行處理(dbname是你要進行收縮的資料庫名,dbname_log是你要進行收縮的資料庫的邏輯日誌名稱)

USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --簡單模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL

對於第一種方法不贊同使用,首先對於資料庫的分離與附加有時候會破壞資料庫,造成資料庫無法還原,還有就是對於在線資料庫也不允許進行分離操作。

對於第二種方法是slq2008收縮日誌文件的一種方法,但是此方法也不能使用過於頻繁,因為進行資料庫恢復模式的更改會截斷事務日誌文件,這樣的話當時利用事務日誌文件進行恢復的時候檢查點不能包含資料庫文件,而且當你要對事務日誌進行備份的時候會重新提示你需要對資料庫進行完整備份。

舉個例子:比如你昨天晚上進行了一次完整備份,然後同時你也進行了一次日誌備份(提前日誌未被截斷),然後你每個小時進行過一次差異備份,最近的差異備份時間點是14點,如果此時資料庫錯誤修改了數據,你可以立馬備份一個日誌文件將資料庫恢復到日誌備份開始到日誌備份終點前的任意時間點 。

如果此時你進行了修改資料庫模式,截斷日誌進行了收縮,那麼你的數據只能恢復到昨天晚上備份的那個日誌備份時間前的任意時間點,也就是今天所做的資料庫更改無法再恢復了,因為日誌文件已經被截斷了,不知道這樣解釋是否明白

因為日誌文件的檢查點(lsn)是連續的,每一次日誌備份都是在上一次備份的基礎上lsn往後增加的,lsn的范圍也包括了資料庫文件的lsn,也只有日誌文件的lsn包括了資料庫文件的lsn,才能將資料庫文件進行回滾。

上圖中總共有三個備份文件,一個完整備份、一個差異備份、一個日誌備份,大家可以注意觀察完整備份的第一個lsn與最後一個lsn,和檢查點

第二個差異備份文件的的第一個lsn與最後一個lsn,和檢查點,最後的日誌備份的第一個lsn和最後一個lsn包含了前面兩個備份文件的lsn,這種情況資料庫就可以恢復到日誌文件備份前的任意時間點,如果日誌文件沒有包含資料庫文件的最後一個lsn也就無法恢復了。

❺ SQL資料庫怎麼還原 用友SQL SERVER恢復資料庫誤刪除數據方法

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, 然後就完成數據的恢復!

❻ sqlserver資料庫表數據誤刪除了 怎麼恢復

恢復sqlserver資料庫表數據步驟如下:

一、心態:

1、務必冷靜,事情已經發生不可慌亂。

2、立即查看當前時間,最好能夠精確到秒,並做記錄。

3、應立即向直接上級反映此事,不可隱瞞,防止事態擴大。

4、如果許可權允許,應當立即停止相關應用,防止有新的數據寫入資料庫。

二、恢復:

1、構建新資料庫以及寫入一些數據

如果查詢發現數據不是你想要的,那麼可以重復上述的操作,從備份事務日誌開始,然後最後選擇時間點的時候在縮小范圍。

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

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

  • 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 server資料庫

恢復過程

以資料庫恢復模式設為FULL為例:

恢復過程的第一步是執行尾日誌備份,(BACKUP LOG Student TO DISK='E:stulog.dmp' ) 。

在恢復一個資料庫之前,為保證上次備份之後發生改變的記錄都包含在恢復過程之中,需要執行這種類型的備份。

下一步,查找資料庫備份文件在機器或網路中的存儲位置。

如果要在另一台伺服器上恢復資料庫,最好是把這些文件復制到目標伺服器中。在備份文件所在的位置,找出最後一個完整的資料庫備份(這些文件通常使用.bak為擴展名);恢復這個完整的備份。


下面的腳本將完整的備份文件應用於NewDatabase資料庫:

RESTOREDATABASENewDatabase
FROMDISK='D:.bak'
WITH
MOVE'PreviousDatabase'TO'D:DataFilesTestDatabase.mdf',
MOVE'PreviousDatabase_log'TO'D:DataFilesTestDatabase_Log.ldf',
NORECOVERY

這段腳本指出完整備份文件位於伺服器的D盤中,你正在使用備份文件恢復NewDatabase這個資料庫。

腳本中的語句將數據文件和日誌文件從完整備份文件轉移到TestDatabase資料庫的新文件中。腳本中的最後一個語句——NORECOVERY——非常重要。

NORECOVERY模式有三種選項,如下所示:

  • NORECOVERY:告訴SQL Server你沒有完成恢復資料庫的過程,隨後會出現恢復文件。當資料庫處於這種狀態時,資料庫還不能使用,因而不允許建立連接。

  • RECOVERY:告訴SQL Server你已經完成資料庫恢復過程,資料庫即將准備就緒。這是默認選項,也是最常用的選項。

  • STANDBY:告訴SQL Server當前資料庫還未為完成恢復做好准備,隨後可以使用日誌文件進行恢復。如果必要,你可以使用這個選項為恢復資料庫建立連接。但是,如果當前不存在連接,將來的事務日誌只能應用於資料庫。

一旦你使用NORECOVERY選項恢復了完整備份,你可以開始應用事務日誌備份或差異備份。

差異備份

差異備份是指對上次完整資料庫備份後資料庫發生的任何改變進行備份。如果有幾個差異備份,只需要恢復最後一個備份文件。在這種情況下,並不存在差異備份,因此可以直接轉向事務日誌備份。

事務日誌備份

事務日誌備份保留上次事務日誌備份後發生的所有事務的痕跡;它還允許把資料庫恢復到資料庫發生錯誤之前的一個時間點。事務日誌備份按順序發生,從而建立一個備份鏈。在把一連串事務日誌備份恢復到一個時間點時,事務日誌文件也必須按順序恢復。

當使用一個資料庫維護計劃來建立事務日誌備份時,事務日誌文件名中往往包含一個時間指示器。

下面的腳本使用NORECOVERY選項應用三個事務日誌備份,最後一個語句把資料庫恢復到最後一個事務日誌文件的結束點。

RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup1.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup2.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup3.trn'
WITHNORECOVERY
RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHRECOVERY

恢復到一個時間點

在上面的例子中,把資料庫恢復到最後一個事務日誌的結束點。

如果想把資料庫恢復到事務日誌結束前的某個特定的時間點,必須使用STOPAT選項。

下面的腳本把日誌序列中的第四個事務日誌恢復到4:01 AM——正好在資料庫出錯之前。

RESTORELOGNewDatabase
FROMDISK=''D:BackupFilesTestDatabase_TransactionLogBackup4.trn'
WITHSTOPAT=N'6/28/20074:01:45PM',RECOVERY

❾ 資料庫有哪三種恢復模式在3種恢復模式下,資料庫日誌文件會執行什麼樣的操作

SQL
Server資料庫有三種恢復模式:簡單恢復模式、完整恢復模式和大容量日誌恢復模式。

相對於簡單恢復模式而言,完整恢復模式和大容量日誌恢復模式提供了更強的數據保護功能。這些恢復模式都是基於備份事務日誌來提供完整的可恢復性及在最大范圍的故障情形內防止丟失工作。通常,資料庫使用完整恢復模式或簡單恢復模式。

下面對三種恢復模式做一個比較:

恢復模式

日誌備份

恢復點

優點

缺點

解決方案及建議

簡單(Simple)

無日誌備份。

自動回收日誌空間以減少空間需求,實際上不再需要管理事務日誌空間。

最新備份之後的更改不受保護。在發生災難時,這些更改必須重做。只能恢復到備份的結尾。

簡單恢復模式可最大程度地減少事務日誌的管理開銷,因為不備份事務日誌。

如果資料庫損壞,則簡單恢復模式將面臨極大的工作丟失風險。數據只能恢復到已丟失數據的最新備份。

在簡單恢復模式下,備份間隔應盡可能短,以防止大量丟失數據。簡單恢復模式並不適合生產系統,因為對生產系統而言,丟失最新的更改是無法接受的。在這種情況下,我們建議使用完整恢復模式。

完整(Full)

需要日誌備份。

理論上可以恢復到任意時點。

數據文件丟失或損壞不會導致丟失工作。

此模式完整記錄所有事務,佔用大量空間。

大容量(Bulk-logged)

需要日誌備份。

如果在最新日誌備份後發生日誌損壞或執行大容量日誌記錄操作,則必須重做自該上次備份之後所做的更改。
可以恢復到任何備份的結尾。不支持時點恢復。

該模式是完整恢復模式的附加模式,允許執行高性能的大容量復制操作。通過使用最小方式記錄大多數大容量操作,減少日誌空間使用量。

比完整模式節省日誌存儲空間。

對於某些大規模大容量操作(如大容量導入或索引創建),暫時切換到大容量日誌恢復模式可提高性能並減少日誌空間使用量。由於大容量日誌恢復模式不支持時點恢復,因此必須在增大日誌備份與增加工作丟失風險之間進行權衡。

注意:

1.
適合於資料庫的恢復模式取決於資料庫的可用性和恢復要求。

2.
在完整恢復模式和大容量日誌恢復模式下,必須進行日誌備份。如果不想進行日誌備份,則請使用簡單恢復模式。

❿ sqlserver資料庫數據被刪除了怎麼還原

sqlserver資料庫數據被刪除了怎麼還原
SQL
Server中誤刪除數據的恢復本來不是件難事,從事務日誌恢復即可。但是,這個恢復需要有兩個前提條件:
1.
至少有一個誤刪除之前的資料庫完全備份。
2.
資料庫的恢復模式(Recovery
mode)是「完整(Full)」。