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,
然後就完成數據的恢復!
2. 急求!sql2005資料庫數據覆蓋,如何 使用日誌恢復資料庫
要
使用日誌恢復資料庫
是幾個條件,
首先,資料庫是完整恢復模式
其次,以前做過完整備份
再次,在做過完整備份後,沒有清過日誌
滿足條件後,可以如下操作,
1、備份一個當前的資料庫日誌,
2、用完備恢復,with
norecovery
3、依次恢復以前備份的日誌文件(不包含本次備份的)
with
norecovery
4、使用本次備份的日誌文件,使用stop
at
,恢復到覆蓋前的時間點。
3. sql server通過日誌恢復資料庫
創建測試資料庫Test
create database Test
on primary
(
name=』Test_data mdf』
filename=』d:Test_data mdf』
)
log on
(
name=』Test_data ldf』
filename=』d:Test_data ldf』
)
創建測試表
create table Test dbo ta(id int)
insert into Test dbo ta select id from sysobjects
創建備份文件
backup database Test to disk=』d:Test bak』 with format
創建一個NDF文件
alter database Test
add file
(
name=』file』
filename=』d:test ndf』
SIZE = MB
)
關閉MSSQL服務 然後刪除NDF文件然後再打開MSSQL服務 此時Test資料庫被疑置啦!
恢復數據疑置
首先備份日誌文件
backup log Test to disk=』d:Test_log bak』 with format no_truncate
利用文件組備份文件恢復被破壞的文件
restore database Test from disk=』d:Test bak』 with Norecovery
恢復日誌文件
restore Log Test from disk=』d:Test_log bak』 with RECOVERY
TipS
如果已經建立ndf文件的話那麼恢復日誌文件的話用下面的這句話
只不過將with RECOVERY >WITH REPLACE
lishixin/Article/program/SQLServer/201311/22310
4. 日誌文件丟失或出錯的情況下如何恢復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中設置的「允許對系統目錄直接修改」一項恢復。
5. 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前一秒鍾。你應檢查日誌以確保時間確切。