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
2. SQL數據被刪除如何恢復
企業管理器
--右鍵"資料庫"
--所有任務
--還原資料庫
--"還原為資料庫庫"中輸入還原後的資料庫名
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件--確定,回到資料庫還原的界面
--備份號--選擇內容--選擇你要恢復那次備份的內容
--選項--將"移至物理文件名"中的物理文件名修改為你的數據文件要存放的文件名
--如果要還原的資料庫已經存在,選擇"在現有資料庫上qz還原"-
-確定
--或用SQL語句:
restore database 資料庫 from disk='c:\你的備份文件名'
還原資料庫
企業管理器中的操作:
1.進行完整恢復
企業管理器--右鍵"資料庫"--所有任務--還原資料庫
--"還原為資料庫庫"中輸入還原後的資料庫名,設為:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到資料庫還原的界面
--"還原備份集",選擇"資料庫--完全"
--選項--將"移至物理文件名"中的物理文件名修改為你的數據文件要存放的文件名
--如果要還原的資料庫已經存在,選擇"在現有資料庫上qz還原"
--"恢復完成狀態",選擇"使資料庫不再運行,但能還原其它事務日誌"
--確定
--或用SQL語句:
restore database 資料庫 from disk='c:\你的完全備份文件名' with norecovery
2.進行差異恢復
企業管理器--右鍵"資料庫"--所有任務--還原資料庫
--"還原為資料庫庫"中選擇資料庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到資料庫還原的界面
--"還原備份集",選擇"資料庫--差異"
--"恢復完成狀態",選擇"使資料庫不再運行,但能還原其它事務日誌"
--確定
--或用SQL語句:
restore database 資料庫 from disk='c:\你的差異備份文件名' with norecovery
3.進行日誌恢復
企業管理器--右鍵"資料庫"--所有任務--還原資料庫
--"還原為資料庫庫"中選擇資料庫名:test
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件
--確定,回到資料庫還原的界面
--"還原備份集",選擇"事務日誌"
--"恢復完成狀態",選擇"使資料庫可以繼續運行,但無法還原其它事務日誌"
--確定
--或用SQL語句:
restore log 資料庫 from disk='c:\你的日誌備份文件名' with recovery
--解決還原資料庫目錄不對的詳細步驟:
1.企業管理器中的方法:
--右鍵"資料庫"
--所有任務
--還原資料庫
--"還原為資料庫庫"中輸入還原後的資料庫名
--還原選擇"從設備"--選擇設備--添加--添加你的備份文件--確定,回到資料庫還原的界面
--備份號--選擇內容--選擇你要恢復那次備份的內容
--選項--將"移至物理文件名"中的物理文件名修改為你的數據文件要存放的文件名
--如果要還原的資料庫已經存在,選擇"在現有資料庫上qz還原"-
-確定
2.用SQL語句的方法(假設你的備份文件名為: c:\xx.bak
--列出備份文件中的邏輯文件名
restore filelistonly from disk='c:\xx.bak'
--用語句恢復,根據上面列出的邏輯文件名使用move選項
restore database 恢復後的資料庫名
from disk='c:\xx.bak'
with move '邏輯數據文件名1' to 'c:\物理數據文件名1'
,move '邏輯數據文件名2' to 'c:\物理數據文件名2'
...
,move '邏輯數據文件名n' to 'c:\物理數據文件名n'
沒有什麼要特別注意的,和企業版之間的備份/還原要注意的東西一樣:
1.要注意備份時的設置問題,不要指定多個備份文件,否則還原時也要指定多個備份文件
2.要注意備份的媒體處理方式問題,用重寫,而不是追加,否則還原的時候要指定備份號
3.要注意備份的方式,用完全備份,而不是其他備份方式,否則還原時還要其他備份文件支持
3. SQL資料庫刪除了一些數據,刪之前有作過備份。刪除之後又有添加新的數據。怎麼還原出所有數據
不知道你是什麼資料庫,是怎麼備份的,這里就說一種比較通用的辦法。
(1)恢復備份數據到臨時表
(2)將現在資料庫內的數據插入臨時表(類似merge,別用啊,表大的話會卡死的),如果不嫌麻煩,那麼就寫一個過程,重復的數據不插入,當然如果能用簡單的方式判斷就更好了,比如時間判斷什麼的,貨叉插入完成後再去重也可以,這個就看你自己的選擇了。
(3)現在臨時表中的數據就是你要的數據,然後用臨時表取代現有表就可以。
4. sql 刪除表中數據後怎麼恢復
首先有兩種方式可以滿足你的需求:
第一:delete
from
student
該方式下資料庫空間不一定能及時釋放出來,而且如果有identity欄位,之後再插入數據也不會從定義的初始值開始自增。
第二:truncate
table
student
該方式可以及時表空間,也能讓新增數據是identity的初始值為之前建表定義的開始
5. 在sql裡面把資料庫刪除了怎麼恢復
不同的資料庫有不同的恢復方式。
Oracle 11g之後有快閃記憶體回歸機制,在一定的時間內可以從快閃記憶體中恢復數據。
MySQL資料庫則在開啟了binlog日誌的情況下,可以通過binlog日誌恢復被刪除的數據。
6. SQL資料庫里的表誤刪除要怎麼恢復
1、實現運行Recovery for SQL Server操作如下。
7. sql資料庫delete刪除後怎麼恢復
一、如果是剛剛刪除,那麼有兩方法:
首先用show parameter undo;命令查看當時的資料庫參數undo_retention設置。
顯示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800單位是秒。即3個小時。
修改默認的undo_retention參數設置:
ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;
方法1,通過oracle提供的回閃功能:
exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss'));
set serveroutput on
DECLARE r_temp hr.job_history%ROWTYPE;
CURSOR c_temp IS SELECT * FROM hr.job_history;
BEGIN
OPEN c_temp;
dbms_flashback.disable;
LOOP
FETCH c_temp INTO r_temp;
EXIT WHEN c_temp%NOTFOUND;
insert into hr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE) values (r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);
commit;
END LOOP;
CLOSE c_temp;
END;
方法2,insert into hr.job_history
select * from hr.job_history as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');
這種方法簡單,容易掌握,功能和上面的一樣時間為你誤操作之前的時間,最好是離誤操作比較近的,因為oracle保存在回滾保持段里的數據時間有一定的時間限制由undo_retention 這個參數值決定。
二、如果是刪除一段時間了,但你有比較新的資料庫備份,就通過備份來恢復。新建一個庫,把備份還原上去,導出表數據,再導入到現在用的庫中去。
三、如果刪除一段時間了,並且無備份,但是數據在寫入表的時候同時會寫入其它一些關聯表的話,那麼就嘗試通過寫SQL語句從其它表取數據出來insert到被刪除的表中。
8. SQL中怎麼將刪除的數據找回來
如果你刪除後還未進行備份,可以停止SQL服務(這樣才能復制資料庫的文件)
復制你誤刪除數據的資料庫的數據文件(.mdf)和日誌備份(.ldf)到另一台電腦,然後附加,再裝上log explorer來恢復誤刪除的數據
如果你刪除後已經進行了備份,那就沒戲了,因為備份會清理日誌,而log explorer是利用日誌來恢復的,沒有日誌當然就恢復不了.
==============
刪除後你備份了沒有?! 沒有就可以試一下!
9. SQL Server如何恢復被刪除的數據
可以根據資料庫日誌,來恢復數據,有專們的資料庫恢復軟體,但是資料庫日誌必須是沒有間斷的
10. 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,
然後就完成數據的恢復!