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

sql簡單恢復模式

發布時間: 2023-03-25 19:51:36

㈠ 日誌文件丟失或出錯的情況下如何恢復sql資料庫

1. 新建資料庫(同名)
2. 停掉資料庫
3. 刪除新建資料庫的日誌文件,用要恢復的覆蓋mdf文件
4. 啟動資料庫伺服器
5. 設置資料庫允許直接操作系統表
6. 設置資料庫為緊急修復模式
update sysdatabases set status=-32768 where dbid=DB_ID('dbDataHome')
7. 重建資料庫日誌文件
dbcc rebuild_log('dbDataHome','D:\Data\dbData_Data.LDF')
8. 驗證資料庫一致性(可省略)
dbcc checkdb('dbDataHome')
9.設置資料庫為正常狀態
exec sp_dboption 'dbDataHome','dbo use only','false'
10. 最後一步,我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復。

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

㈢ SQL SERVER恢復策略

Microsoft SQL Server的資料庫備份和恢復策略
一、概述
備份和恢復是資料庫管理員維護資料庫安全性和完整性的重要操作。備份是恢復資料庫最容易和最能防止意外的保證方法。沒有備份,所有的數據都可能會丟失。備份可以防止表和資料庫遭受破壞、介質失效或用戶錯誤而造成數據災難。恢復是在意外發生後,利用備份來恢復資料庫的操作。
Microsoft SQL Server資料庫中對於數據的備份和恢復有幾種不同的方法,本人結合以往的一些經驗,對其歸納如下。

二、常用的備份和恢復資料庫的方法
1、Microsoft SQL Server中的備份和恢復:
1)備份類型,分別為:
•資料庫備份(Database Backups)
•事務日誌備份(Transaction Log Backup)
•差異備份(Differential Database Backups)
•文件和文件組備份(File and File Group Backup)
A.資料庫備份(Database Backups)
資料庫備份是指對資料庫的完整備份,包括所有的數據以及資料庫對象。實際上備份資料庫過程就是首先將事務日誌寫到磁碟上,然後根據事務創建相同的資料庫和資料庫對象以及拷貝數據的過程。由於是對資料庫的完全備份,所以這種備份類型不僅速度較慢,而且將佔用大量磁碟空間。
B.事務日誌備份(Transaction Log Backup)
事務日誌備份是指對資料庫發生的事務進行備份,包括從上次進行事務日誌備份、差異備份和資料庫完全備份之後,所有已經完成的事務。
C.差異備份(Differential Database Backups)
差異備份是指將最近一次資料庫備份以來發生的數據變化備份起來,因此差異備份實際上是一種增量資料庫備份。與完整資料庫備份相比,差異備份由於備份的數據量較小,所以備份和恢復所用的時間較短。但是它卻無法像事務日誌備份那樣提供到失敗點的無數據損失備份。
D.文件和文件組備份(File and File Group Backup)
文件或文件組備份是指對資料庫文件或文件夾進行備份,但其不像完整的資料庫備份那樣同時也進行事務日誌備份。使用該備份方法可提高資料庫恢復的速度,因為其僅對遭到破壞的文件或文件組進行恢復。
2)資料庫恢復模式
•簡單恢復(SimpleRecovery)
•完全恢復(Full Recovery)
•批日誌恢復(Bulk-logged Recovery)
A.簡單恢復(Simple Recovery)
所謂簡單恢復就是指在進行資料庫恢復時僅使用了資料庫備份或差異備份,而不涉及事務日誌備份。簡單恢復模式可使資料庫恢復到上一次備份的狀態,但由於不使用事務日誌備份來進行恢復,所以無法將資料庫恢復到失敗點狀態。
B.完全恢復(Full Recovery)
完全資料庫恢復模式是指通過使用資料庫備份和事務日誌備份將資料庫恢復到發生失敗的時刻,因此幾乎不造成任何數據丟失,這成為對付因存儲介質損壞而數據丟失的最佳方法。
C.批日誌恢復(Bulk-logged Recovery)
批日誌恢復在性能上要優於簡單恢復和完全恢復模式,它能盡最大努力減少批操作所需要的存儲空間。

2、使用SQL SERVER的管理器ENTERPRISE MANAGER進行備份和恢復
1)完全手工方式。
在這種方式下,選擇要備份和恢復的資料庫,單擊滑鼠右鍵,在快捷菜單中的「ALL TASKS」下選擇備份或者恢復資料庫。
2)半手工方式。
這種方式就是管理員事先建立備份或者恢復資料庫的作業,待到備份或者恢復資料庫的時候,管理員打開「SQL SERVER ENTEPRISE MANAGER」,在「MANAGER」里找到相應的作業,然後執行之。
3)全自動方式。
在資料庫管理器裡面,管理員事先建立好恢復或者備份資料庫的作業,然後定製一個執行計劃,讓計算機在特定的條件下自己執行備份和恢復操作。
作業是ENTERPRISE MANAGER提供的一種定期處理數據的一種方法,前面提到的半手工方式和全自動方式雖然利用了作業,但它需要在ENTERPRISE MANAGER里啟動和關閉作業;現在還可以在應用程序客戶端啟動和關閉作業的機制以作業機制實現資料庫的恢復和備份,就是事先在建立備份和恢復資料庫的作業,在應用程序客戶端用控制體啟動相應的執行體來實現之。用這種方式實現資料庫的備份和恢復,用戶不必打開資料庫管理器進行操作,用戶可以在任何一個應用程序客戶端完成操作。

3、異機備份策略
在區域網內的任何一台工作站計算機上安裝Microsoft Windows NT及Microsoft SQL Server,並在該機上建立一個與伺服器中的資料庫同名的資料庫,利用Microsoft SQL Server系統本身提供的異機傳送工具(在Microsof SQL Enterprise Manager中的Tools菜單下的Database/Object Transfer)通過設置定時(可以是每周、每月、每日或每時)由計算機自動的把伺服器中資料庫的數據傳送到該工作站機的資料庫中,這樣一旦伺服器(操作系統)崩潰或Microsoft SQL Server系統崩潰時,只要重裝伺服器操作系統(Microsoft Windows NT)或重裝Microsoft SQL Server仍然可以採用異機傳送工具來通過該工作站機把數據傳回至伺服器的Microsoft SQL Server資料庫中,以確保數據的安全恢復。

三、比較
上述這三種備份和恢復的方式,分別是在SQL Server之內、SQL SERVER的管理器中和異機中實現的。
SQL Server中的備份和恢復是資料庫本身的一個功能,而且其提供了不同級別的備份和恢復策略,是一種比較完善的資料庫安全保護措施,但由於此操作只能在資料庫管理器中進行,所以對於人員和設備的要求比較高,僅限於有限個人和機器可以操作,所以操作起來有一定的局限性。
SQL SERVER的管理器中的備份和恢復可以利用作業機制在任何一個應用程序客戶端完成操作,打破了我們常規對大型資料庫備份和恢復必須在資料庫管理器里進行的局限性,為在應用程序客戶端實現復雜的資料庫維護提供了一個思路,也大大方便了用戶的操作。但是由於這種操作的方便性,也決定了其有一定的不安全性。
異機中的備份和恢復是最安全最可靠的方式,而且對於資料庫的恢復來說也是最方便的一種,它完全避免了任何形式的數據損毀的威脅,特別是針對伺服器崩潰和Microsoft SQL Server系統崩潰,其恢復效果是很理想的。因此對於一些重要的大型資料庫來說是很可取的。但是由於成本較高,採用這種方法對於一些較小型的資料庫系統是比較難以實現的。

四、結論
上述的三種方式都是資料庫備份和恢復較為常用的一些方法,雖然各自實現的方式不同,但都達到了保護數據安全的目的。所以本人認為這三種方法都是可取的。
但是對於具體的案例,還需要仔細考慮各自系統的特性和方法的可操作性,例如一般中小型的資料庫,網內工作站計算機的分布范圍不是很大(象一座大廈內),距離伺服器的比較近時,採用Microsoft SQL Server內的備份恢復策略就完全可以解決問題;而對於一些伺服器距離較遠的資料庫系統,人員無法常常去到伺服器所在地去實施備份和恢復的,採用SQL SERVER的管理器中的策略就很理想;再者對於資料庫內數據比較龐大,恢復起來需要一定的時間的,就不防採用異機備份的策略,可以大大降低因系統崩潰所帶來的損失。
總之,事物總有其兩面性,沒有哪種方法是適用於任何情況的,我們應該在實際工作中多總結、歸納,逐漸摸索出最適合自身系統的一種解決方案,這樣才能使我們的工作順利開展

㈣ SQL2008中三種恢復模式的區別在哪裡

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

  1. Simple 簡單恢復模式,

    Simple模式的舊稱叫」Checkpoint with truncate log「,其實這個名字更形象,在Simple模式下,SQL Server會在每次checkpoint或backup之後自動截斷log,也就是丟棄所有的inactive log records,僅保留用於實例啟動時自動發生的instance recovery所需的少量log,這樣做的好處是log文件非常小,不需要DBA去維護、備份log,但壞處也是顯而易見的,就是一旦資料庫出現異常,需要恢復時,最多隻能恢復到上一次的備份,無法恢復到最近可用狀態,因為log丟失了。
    Simple模式主要用於非critical的業務,比如開發庫和測試庫,但是道富這邊的SQL Server(即使是生產庫)大都採用Simple模式,是因為這邊的SQL Server大都用於非critical的業務(critical的資料庫大都採用Oracle和DB2),可以忍受少於1天的數據丟失(我們的job每天都會定時備份全庫)。

  2. Full 完整恢復模式,

    和Simple模式相反,Full模式的舊稱叫」Checkpoint without truncate log「,也就是SQL Server不主動截斷log,只有備份log之後,才可以截斷log,否則log文件會一直增大,直到撐爆硬碟,因此需要部署一個job定時備份log。Full的好處是可以做point-in-time恢復,最大限度的保證數據不丟失,一般用於critical的業務環境里。缺點就是DBA需要維護log,增加人員成本(其實也就是多了定時備份log這項工作而已)。

  3. Bulk-logged 大容量日誌恢復

    Bulk-logged模式和full模式類似,唯一的不同是針對以下Bulk操作,會產生盡量少的log:
    1) Bulk load operations (bcp and BULK INSERT).
    2) SELECT INTO.
    3) Create/drop/rebuild index
    眾所周知,通常bulk操作會產生大量的log,對SQL Server的性能有較大影響,bulk-logged模式的作用就在於降低這種性能影響,並防止log文件過分增長,但是它的問題是無法point-in-time恢復到包含bulk-logged record的這段時間。
    Bulk-logged模式的最佳實踐方案是在做bulk操作之前切換到bulk-logged,在bulk操作結束之後馬上切換回full模式。


㈤ sql2005備份資料庫怎麼恢復

資料庫數據恢復步驟

1、通過日誌恢復SQLSERVER2005數據(也可通過LogExplorer工具查找進行恢復數據)

(A)......通過日誌和時間點來恢復數據的前提條件:資料庫的故障恢復改為非簡單模式,去掉自動關閉和自動收縮兩個選項,如果是簡單模式:類似下面的語句操作數據就不會記錄到日誌中:select*intotfrom[表名].【採用LogExplorer工具可以在線操作,通過恢復日誌(指定時間點恢復)來恢復數據,必須停止資料庫或者再另一個資料庫恢復(前提是必須有一個完全備份和日誌備份)】

這時為保證數據的完整要將資料庫的恢復模式改成「完整.

1.1、這時對資料庫事務日誌做備份(注意,如果沒做個資料庫完整備份,是不能做事務日誌備份的)

這時新建一個資料庫zp(將以前的資料庫改名),恢復資料庫

這時我們看到,有兩個還原的資料庫備份,因為我對zp資料庫備份了兩次,兩次的備份的數據文件都一樣。這里我們選擇最近時間的備份默認在資料庫的設置如下:是追加到備份集里,所以會有兩個備份。

同時,在」選項「里設置」不回滾「事務,

注意:通過事務日誌還原資料庫,必須選擇"不回滾"事務

確定後:出現下面情況:

這時發現,資料庫一直是」正在還原「,這時還原資料庫事務日誌,

1.2、「常規」里選擇時間,(剛刪除的時間)

1.3、「選項」里將恢復狀態設置為」回滾未提交「事務

確定後,查詢資料庫,發現數據回來了.

2、無日誌的數據恢復

2.1.新建一個同名的資料庫
2.2再停掉sqlserver(注意不要分離資料庫)
2.3用原資料庫的數據文件覆蓋掉這個新建的資料庫
2.4再重啟sqlserver
2.5此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的資料庫名)
2.6完成後一般就可以訪問資料庫中的數據了,這時,資料庫本身一般還要問題,解決辦法是,利用
資料庫的腳本創建一個新的資料庫,並將數據導進去就行了.

USEMASTER
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='資料庫名'
sp_dboption'資料庫名','singleuser','true'
DBCCCHECKDB('資料庫名')
updatesysdatabasessetstatus=28wherename='資料庫名'
sp_configure'allowupdates',0reconfigurewithoverride
sp_dboption'資料庫名','singleuser','false'

㈥ 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 server資料庫日誌滿了怎麼處理

一、刪除日誌文件。

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

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