一、如果是剛剛刪除,那么有兩方法:

成都創(chuàng)新互聯(lián)專注于章貢網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供章貢營(yíng)銷型網(wǎng)站建設(shè),章貢網(wǎng)站制作、章貢網(wǎng)頁設(shè)計(jì)、章貢網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造章貢網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供章貢網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
首先用show parameter undo;命令查看當(dāng)時(shí)的數(shù)據(jù)庫(kù)參數(shù)undo_retention設(shè)置。
顯示如下:
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
undo_retention(保持力),10800單位是秒。即3個(gè)小時(shí)。
修改默認(rèn)的undo_retention參數(shù)設(shè)置:
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');
這種方法簡(jiǎn)單,容易掌握,功能和上面的一樣時(shí)間為你誤操作之前的時(shí)間,最好是離誤操作比較近的,因?yàn)閛racle保存在回滾保持段里的數(shù)據(jù)時(shí)間有一定的時(shí)間限制由undo_retention 這個(gè)參數(shù)值決定。
二、如果是刪除一段時(shí)間了,但你有比較新的數(shù)據(jù)庫(kù)備份,就通過備份來恢復(fù)。新建一個(gè)庫(kù),把備份還原上去,導(dǎo)出表數(shù)據(jù),再導(dǎo)入到現(xiàn)在用的庫(kù)中去。
三、如果刪除一段時(shí)間了,并且無備份,但是數(shù)據(jù)在寫入表的時(shí)候同時(shí)會(huì)寫入其它一些關(guān)聯(lián)表的話,那么就嘗試通過寫SQL語句從其它表取數(shù)據(jù)出來insert到被刪除的表中。
恢復(fù)sqlserver數(shù)據(jù)庫(kù)表數(shù)據(jù)步驟如下:
一、心態(tài):
1、務(wù)必冷靜,事情已經(jīng)發(fā)生不可慌亂。
2、立即查看當(dāng)前時(shí)間,最好能夠精確到秒,并做記錄。
3、應(yīng)立即向直接上級(jí)反映此事,不可隱瞞,防止事態(tài)擴(kuò)大。
4、如果權(quán)限允許,應(yīng)當(dāng)立即停止相關(guān)應(yīng)用,防止有新的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)。
二、恢復(fù):
1、構(gòu)建新數(shù)據(jù)庫(kù)以及寫入一些數(shù)據(jù)
2、做一次完整備份,這個(gè)是前提,沒有一份完整備份文件是無法進(jìn)行接下來的操作的。
注意:如上圖所示,恢復(fù)模式一定要說完整,如果是其他類型那恐怕就沒有下文了。一般來講新建數(shù)據(jù)庫(kù)的時(shí)候,默認(rèn)不要去改恢復(fù)模式這個(gè)屬性。
3、寫入一條新數(shù)據(jù)。
4、記住此時(shí)要記錄時(shí)間點(diǎn)。
此刻最好看一下系統(tǒng)時(shí)間。接下來就要演示如何進(jìn)行數(shù)據(jù)恢復(fù)。
5、做事務(wù)日志備份,做事務(wù)日志備份需要注意一下一點(diǎn),如圖所示。
備份模式請(qǐng)選擇事務(wù)日志,備份路徑自行決定
進(jìn)入選項(xiàng),將可靠性第1、2勾選,事務(wù)日志選擇第二個(gè),壓縮屬性可以不選擇.點(diǎn)擊確定備份成功,此時(shí)數(shù)據(jù)庫(kù)將顯示為正在還原狀態(tài)
注意:如果備份失敗,請(qǐng)檢查該數(shù)據(jù)庫(kù)是否正在被占用,如果是請(qǐng)kill。
6、還原完整備份。
數(shù)據(jù)庫(kù)處于正在還原狀態(tài),右鍵數(shù)據(jù)庫(kù)--任務(wù)--還原--文件和文件組,選擇最近的一次完整備份。此時(shí),需要在“選項(xiàng)”中選擇第二種還原方式,具體如下圖。
如上圖,勾選完整數(shù)據(jù)備份文件。
如上圖,恢復(fù)狀態(tài)選擇第二種,從字面意思就知道為什么要選擇這種。
7、接著還原備份的事務(wù)日志。
完整備份還原完畢,接著要對(duì)事務(wù)日志進(jìn)行還原,右鍵數(shù)據(jù)庫(kù)--任務(wù)--還原--事務(wù)日志,如下圖:
還原事務(wù)日志的時(shí)候需要特別注意“時(shí)間點(diǎn)”這個(gè)設(shè)置,其他不需要設(shè)置。
時(shí)間點(diǎn)選擇為誤刪數(shù)據(jù)的時(shí)間點(diǎn)之前就可以恢復(fù)出誤刪的數(shù)據(jù),所以之前強(qiáng)調(diào)要查看一下時(shí)間。如下圖所示
點(diǎn)擊確定,在確定等待還原成功,數(shù)據(jù)庫(kù)變成可用狀態(tài)。如下圖。
如果查詢發(fā)現(xiàn)數(shù)據(jù)不是你想要的,那么可以重復(fù)上述的操作,從備份事務(wù)日志開始,然后最后選擇時(shí)間點(diǎn)的時(shí)候在縮小范圍。
實(shí)際操作系統(tǒng)文件在磁盤上的物理名稱,在該文件中將存儲(chǔ)數(shù)據(jù)或日志(取決于定義哪個(gè)部分)。默認(rèn)情況下,文件位于\Program Files\Microsoft SQLServer10.MSSQLSERVER\MSSQL(或者SQL Server安裝主目錄)的\Data子目錄下。如果是處理物理數(shù)據(jù)庫(kù)文件,那么名稱將和數(shù)據(jù)庫(kù)名稱一樣,但是帶有.mdf擴(kuò)展名。如果處理日志文件,那么名稱和數(shù)據(jù)庫(kù)文件的名稱一樣,但是有后綴_Log以及擴(kuò)展名.ldf。建議使用默認(rèn)擴(kuò)展名.mdf(數(shù)據(jù)庫(kù))和.ldf(日志文件)。附屬文件的擴(kuò)展名是.ndf。
方法1:
在
master
中執(zhí)行
exec
sp_detach_db
'fj20070116',
'true'
接下來到相應(yīng)的數(shù)據(jù)庫(kù)文件目錄下刪除log文件
exec
sp_attach_db
@dbname
=
n'fj20070116',
@filename1
=
n'f:\microsoft
sql
server\mssql\data\fj20070116_data.mdf'
執(zhí)行結(jié)果如下(表明刪除日志成功,并重建數(shù)據(jù)庫(kù)日志文件):
設(shè)備激活錯(cuò)誤。物理文件名
'f:\microsoft
sql
server\mssql\data\fj20070116_log.ldf'
可能有誤。
已創(chuàng)建名為
'f:\microsoft
sql
server\mssql\data\fj20070116_log.ldf'
的新日志文件。
方法2:
選中要分離的數(shù)據(jù)庫(kù),先將其分離。
刪除對(duì)應(yīng)的日志文件。
數(shù)據(jù)庫(kù)--所有任務(wù)--附加數(shù)據(jù)庫(kù)--在附加數(shù)據(jù)庫(kù)的彈出框中選擇mdf
選擇是即可完成創(chuàng)建新的數(shù)據(jù)庫(kù)日志文件。對(duì)數(shù)據(jù)庫(kù)操作沒有任何影響。
以上兩個(gè)方法生成的log文件只有504kb。
使用Log Explorer查看和恢復(fù)數(shù)據(jù)
Log Explorer 4.1.可用于SQL Server2005的日志查看工具
下載地址:
使用方法:
打開Log Explorer - Attach Log File - 選擇SQL Server服務(wù)器和登陸方式 - Connect -
在Database Name中選擇數(shù)據(jù)庫(kù) - Attach- 左面對(duì)話框中Browse- View Log- 就可以看到log記錄了
想恢復(fù)的話: 右鍵Log記錄 Undo Transation- 選擇保存文件名和路徑- 然后打開該文件到查詢分析器里執(zhí)行
T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table ....
然后將此insert table的代碼放到查詢分析器里執(zhí)行.就可以恢復(fù)數(shù)據(jù).
----------------------------------------------------------------------
--如何恢復(fù)被delete/update的數(shù)據(jù)
----------------------------------------------------------------------
1 連接到被刪除數(shù)據(jù)庫(kù)的Db
打開log explorer 選擇 "file"-"attach log file"-選擇服務(wù)器和登陸方式-"connect"-選擇"數(shù)據(jù)庫(kù)"-"attach"
2 查看日志
在左面操作項(xiàng)目的對(duì)話框中選擇"browse"項(xiàng)目-"view log"-就可以看到當(dāng)前的Log記錄了
3 恢復(fù)數(shù)據(jù)
右鍵某一條log記錄,選擇"undo transation"-"選擇保存文件名和路徑"-然后打開該文件到查詢分析器里執(zhí)行
T-sql代碼就可以了
例如: 如果log是delete table where ...的話,生成的文件代碼就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢復(fù)被drop table和truncate table后的數(shù)據(jù)
----------------------------------------------------------------------
1 連接到被刪除數(shù)據(jù)庫(kù)的Db
操作同上
2 恢復(fù)方法
1) 選擇"salvaage dropped/truncate"菜單,在右邊的對(duì)話框中選擇表名,和droped/trucated的日期,
File Name中選擇生成insert語句腳步的存放位置,condition選擇是droped還是truncated,
最后點(diǎn)擊"create" 就會(huì)生成insert語句,把生成的語句到查詢分析器里面執(zhí)行一下就可以了
2) 選擇"ViewDDL Commands"菜單-選"truncate table" 操作項(xiàng)-點(diǎn)擊"Salvage"-生成語句-查詢分析器里執(zhí)行
----------------------------------------------------------------------
--log explorer使用的幾個(gè)問題
----------------------------------------------------------------------
1) 對(duì)數(shù)據(jù)庫(kù)做完全/差異/日志備份
備份時(shí)如果選用了刪除事務(wù)日志中不活動(dòng)的條目
再用Log explorer打試圖看日志時(shí),提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務(wù)日志中不活動(dòng)的條目
再用Log explorer打試圖看日志時(shí),就能看到原來的日志并做恢復(fù)
2) 修改了其中一個(gè)表中的部分?jǐn)?shù)據(jù),此時(shí)用Log explorer看日志,可以作日志恢復(fù)
3) 然后恢復(fù)備份,(注意:恢復(fù)是斷開log explorer與數(shù)據(jù)庫(kù)的連接,或連接到其他數(shù)據(jù)上,
否則會(huì)出現(xiàn)數(shù)據(jù)庫(kù)正在使用無法恢復(fù))
恢復(fù)完后,再打開log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日志記錄,所以無法做恢復(fù).
4) 不要用SQL的備份功能備份,搞不好你的日志就破壞了.
正確的備份方法是:
停止SQL服務(wù),復(fù)制數(shù)據(jù)文件及日志文件進(jìn)行文件備份.
然后啟動(dòng)SQL服務(wù),用log explorer恢復(fù)數(shù)據(jù)
在sqlserver2012的維護(hù)計(jì)劃向?qū)е校⑼暾麄浞荩町悅浞莺褪聞?wù)日志。
1、至少有一個(gè)誤刪除之前的數(shù)據(jù)庫(kù)完全備份數(shù)據(jù)庫(kù)的恢復(fù)模式(Recovery mode)是“完整(Full)針對(duì)這兩個(gè)前提條件,如果這兩個(gè)前提條件都存在,通過SQL語句只需三步就能恢復(fù)參考文章,無需借助第三方工具。
2、備份當(dāng)前數(shù)據(jù)庫(kù)的事務(wù)日志:BACKUP LOG [數(shù)據(jù)庫(kù)名] TO disk= N'備份文件名' WITH NORECOVERY恢復(fù)一個(gè)誤刪除之前的完全備份RESTORE DATABASE [數(shù)據(jù)庫(kù)名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, ?REPLACE。
3、將數(shù)據(jù)庫(kù)恢復(fù)至誤刪除之前的時(shí)間點(diǎn):RESTORE LOG [數(shù)據(jù)庫(kù)] FROM ?DISK = N'第一步的日志備份文件名' WITH ? STOPAT = N'誤刪除之前的時(shí)間點(diǎn)' , RECOVER如果第1個(gè)前提條件不存在,第2個(gè)前提條件存在,需要借助第三方工具。
4、如果第2個(gè)前提條件不存在,無法恢復(fù)所以,一定要將數(shù)據(jù)庫(kù)恢復(fù)模式設(shè)置為“完整開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。后來找的是SQL Log Rescue,也不支持SQL Server 2008接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購(gòu)買,Demo版并沒有數(shù)據(jù)恢復(fù)功能。
5、最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業(yè)軟件,需要購(gòu)買,但Demo版可以恢復(fù)數(shù)據(jù),只要數(shù)據(jù)庫(kù)文件不超過24Gb用它完成了誤刪除數(shù)據(jù)的恢復(fù)。
網(wǎng)頁標(biāo)題:sqlserver被刪除,sql server不小心刪了數(shù)據(jù)
網(wǎng)頁鏈接:http://chinadenli.net/article45/dsecjei.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、小程序開發(fā)、定制網(wǎng)站、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)