新聞中心
sqlserver數(shù)據(jù)庫(kù)數(shù)據(jù)被刪除了怎么還原
SQL Server中誤刪除數(shù)據(jù)的恢復(fù)本來(lái)不是件難事,從事務(wù)日志恢復(fù)即可。但是,這個(gè)恢復(fù)需要有兩個(gè)前提條件:
創(chuàng)新互聯(lián)專(zhuān)注于靖安企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。靖安網(wǎng)站建設(shè)公司,為靖安等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
1. 至少有一個(gè)誤刪除之前的數(shù)據(jù)庫(kù)完全備份。
2. 數(shù)據(jù)庫(kù)的恢復(fù)模式(Recovery mode)是“完整(Full)”。
針對(duì)這兩個(gè)前提條件,會(huì)有三種情況:
情況一、如果這兩個(gè)前提條件都存在,通過(guò)SQL語(yǔ)句只需三步就能恢復(fù)(參考文章),無(wú)需借助第三方工具。
a) 備份當(dāng)前數(shù)據(jù)庫(kù)的事務(wù)日志:BACKUP LOG [數(shù)據(jù)庫(kù)名] TO disk= N'備份文件名' WITH NORECOVERY
b) 恢復(fù)一個(gè)誤刪除之前的完全備份:RESTORE DATABASE [數(shù)據(jù)庫(kù)名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, REPLACE
c) 將數(shù)據(jù)庫(kù)恢復(fù)至誤刪除之前的時(shí)間點(diǎn):RESTORE LOG [數(shù)據(jù)庫(kù)] FROM DISK = N'第一步的日志備份文件名' WITH STOPAT = N'誤刪除之前的時(shí)間點(diǎn)' , RECOVERY
情況二、如果第1個(gè)前提條件不存在,第2個(gè)前提條件存在,需要借助第三方工具。
情況三、如果第2個(gè)前提條件不存在,無(wú)法恢復(fù)。所以,一定要將數(shù)據(jù)庫(kù)恢復(fù)模式設(shè)置為“完整(Full)”。
我現(xiàn)在面臨的是第二種情況,需要找第三方工具。
開(kāi)始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后來(lái)找的是SQL Log Rescue,也不支持SQL Server 2008。
接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購(gòu)買(mǎi),Demo版并沒(méi)有數(shù)據(jù)恢復(fù)功能。
最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業(yè)軟件,需要購(gòu)買(mǎi),但Demo版可以恢復(fù)數(shù)據(jù),只要數(shù)據(jù)庫(kù)文件不超過(guò)24Gb。幸好朋友的數(shù)據(jù)庫(kù)文件不大,用它完成了誤刪除數(shù)據(jù)的恢復(fù)。
下面分享一下用Recovery for SQL Server進(jìn)行恢復(fù)的操作步驟:
1. 運(yùn)行Recovery for SQL Server
2. 點(diǎn)擊菜單中的 File Recover,選擇要恢復(fù)的數(shù)據(jù)庫(kù)的數(shù)據(jù)文件(.mdf)
3. Next Next,進(jìn)入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日志中恢復(fù)誤刪除的數(shù)據(jù))。
4. Next 進(jìn)入 Recovery options 窗口,選中 Search for deleted records,并選擇要恢復(fù)的數(shù)據(jù)庫(kù)的日志文件路徑(log file path)。
5. Next 并選擇目標(biāo)文件夾(Destination folder),用于存放恢復(fù)過(guò)程中生成的SQL語(yǔ)句與bat文件。
6. 點(diǎn)擊Start,開(kāi)始恢復(fù)操作(在上一步選擇的目標(biāo)文件夾中生成相應(yīng)的SQL文件與Bat文件),然后,出現(xiàn) SQL Server Database Creation Utility 窗口。
7. Next,選擇被恢復(fù)數(shù)據(jù)存放的目標(biāo)數(shù)據(jù)庫(kù)。
8. Next, 選擇 Import availiable data from both database and log files
9. Next, Next, 然后就完成數(shù)據(jù)的恢復(fù)!
sqlserver怎么恢復(fù)刪除
使用Log Explorer查看和恢復(fù)數(shù)據(jù)
Log Explorer 4.1.可用于SQL Server2005的日志查看工具
下載地址:
使用方法:
打開(kāi)Log Explorer - Attach Log File - 選擇SQL Server服務(wù)器和登陸方式 - Connect -
在Database Name中選擇數(shù)據(jù)庫(kù) - Attach- 左面對(duì)話框中Browse- View Log- 就可以看到log記錄了
想恢復(fù)的話: 右鍵Log記錄 Undo Transation- 選擇保存文件名和路徑- 然后打開(kāi)該文件到查詢分析器里執(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
打開(kāi)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"-"選擇保存文件名和路徑"-然后打開(kāi)該文件到查詢分析器里執(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語(yǔ)句腳步的存放位置,condition選擇是droped還是truncated,
最后點(diǎn)擊"create" 就會(huì)生成insert語(yǔ)句,把生成的語(yǔ)句到查詢分析器里面執(zhí)行一下就可以了
2) 選擇"ViewDDL Commands"菜單-選"truncate table" 操作項(xiàng)-點(diǎn)擊"Salvage"-生成語(yǔ)句-查詢分析器里執(zhí)行
----------------------------------------------------------------------
--log explorer使用的幾個(gè)問(wèn)題
----------------------------------------------------------------------
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í),就能看到原來(lái)的日志并做恢復(fù)
2) 修改了其中一個(gè)表中的部分?jǐn)?shù)據(jù),此時(shí)用Log explorer看日志,可以作日志恢復(fù)
3) 然后恢復(fù)備份,(注意:恢復(fù)是斷開(kāi)log explorer與數(shù)據(jù)庫(kù)的連接,或連接到其他數(shù)據(jù)上,
否則會(huì)出現(xiàn)數(shù)據(jù)庫(kù)正在使用無(wú)法恢復(fù))
恢復(fù)完后,再打開(kāi)log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日志記錄,所以無(wú)法做恢復(fù).
4) 不要用SQL的備份功能備份,搞不好你的日志就破壞了.
正確的備份方法是:
停止SQL服務(wù),復(fù)制數(shù)據(jù)文件及日志文件進(jìn)行文件備份.
然后啟動(dòng)SQL服務(wù),用log explorer恢復(fù)數(shù)據(jù)
錯(cuò)刪掉sql數(shù)據(jù)庫(kù)怎么找回?
我認(rèn)為有兩個(gè)辦法:
1、如果能夠備份“置疑”數(shù)據(jù)庫(kù)的話,現(xiàn)備份出來(lái),然后刪除該數(shù)據(jù)庫(kù),最后由備份出來(lái)的文件恢復(fù)。
2、如果無(wú)法備份可以采取先停止sql
server,然后到sql安裝目錄的data(系統(tǒng)默認(rèn)時(shí)這里,也可能在其他你放置的目錄下)目錄下找到該“置疑”數(shù)據(jù)庫(kù)文件和日志文件拷貝到其他目錄,啟動(dòng)sql
server,刪除該數(shù)據(jù)庫(kù),將考出的數(shù)據(jù)庫(kù)文件和日志文件考回原目錄,最后用這兩個(gè)文件通過(guò)數(shù)據(jù)庫(kù)附加的方法恢復(fù)原數(shù)據(jù)庫(kù)。
sqlserver數(shù)據(jù)庫(kù)delete刪除后怎么恢復(fù)
一、如果是剛剛刪除,那么有兩方法:
首先用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,通過(guò)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ù)備份,就通過(guò)備份來(lái)恢復(fù)。新建一個(gè)庫(kù),把備份還原上去,導(dǎo)出表數(shù)據(jù),再導(dǎo)入到現(xiàn)在用的庫(kù)中去。
三、如果刪除一段時(shí)間了,并且無(wú)備份,但是數(shù)據(jù)在寫(xiě)入表的時(shí)候同時(shí)會(huì)寫(xiě)入其它一些關(guān)聯(lián)表的話,那么就嘗試通過(guò)寫(xiě)SQL語(yǔ)句從其它表取數(shù)據(jù)出來(lái)insert到被刪除的表中。
SQLserver刪不干凈
如何徹底清除已安裝的SQL SERVER
安裝SQL 2000后如果刪除不干凈會(huì)給軟件日常的操作埋下大的隱換,刪除干凈才是硬道理,如何操作呢?
首先,在添加\刪除程序中通過(guò)正常方式卸載掉SQL SERVER之后按以下步驟執(zhí)行:
1、將Program files下的SQL安裝目錄刪除(此處如果有重要的數(shù)據(jù),請(qǐng)先備份)
C:\Program Files\Microsoft SQL Server\80\Tools。
C:\Program Files\Microsoft SQL Server\MSSQL。
2、注冊(cè)表中的相關(guān)信息刪除:
請(qǐng)先做好注冊(cè)表備份,可以將當(dāng)前的注冊(cè)表導(dǎo)出。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC。
3、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations項(xiàng)目,并刪除它。這樣就可以清除安裝暫掛項(xiàng)目
4、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\setup刪除ExceptionComponents
這個(gè)項(xiàng)目下的內(nèi)容可能很多,只有在上面幾個(gè)辦法不行的情況下,使用此方法(注意不要全部刪除)
刪除內(nèi)容前先看下內(nèi)容說(shuō)明
5、Windows目錄中的Sqlstp.log文件,該文件列出了安裝程序所執(zhí)行的操作的詳細(xì)信息,并包含安裝期間遇到的所有錯(cuò)誤。通過(guò)檢查該文件,可以詳細(xì)了解安裝在什么地方失敗、為什么失敗。
6、SQL安裝的時(shí)的錯(cuò)誤信息保存在一個(gè)叫Errorlog的日志文件中,默認(rèn)情況下該文件位于Program Files\MicrosoftSQLServer\Mssql\Log目錄中。該錯(cuò)誤日志包含安裝程序試圖啟動(dòng)SQL Server時(shí) SQL Server所遇到的錯(cuò)誤,這些信息可以幫助您深入檢查錯(cuò)誤原因。
7、需要檢查的另一個(gè)組件是Microsoft 數(shù)據(jù)訪問(wèn)組件(MDAC)安裝程序,它作為SQL Server 2000安裝程序的一部分啟動(dòng)。SQL Server 2000安裝程序會(huì)安裝MDAC 。 安裝程序會(huì)創(chuàng)建名為Dasetup.log的單獨(dú)的日志文件;您可以查看此日志文件并確保MDAC安裝程序沒(méi)有出現(xiàn)問(wèn)題。
sqlserver數(shù)據(jù)庫(kù)表數(shù)據(jù)誤刪除了 怎么恢復(fù)
恢復(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ù)寫(xiě)入數(shù)據(jù)庫(kù)。
二、恢復(fù):
1、構(gòu)建新數(shù)據(jù)庫(kù)以及寫(xiě)入一些數(shù)據(jù)
2、做一次完整備份,這個(gè)是前提,沒(méi)有一份完整備份文件是無(wú)法進(jìn)行接下來(lái)的操作的。
注意:如上圖所示,恢復(fù)模式一定要說(shuō)完整,如果是其他類(lèi)型那恐怕就沒(méi)有下文了。一般來(lái)講新建數(shù)據(jù)庫(kù)的時(shí)候,默認(rèn)不要去改恢復(fù)模式這個(gè)屬性。
3、寫(xiě)入一條新數(shù)據(jù)。
4、記住此時(shí)要記錄時(shí)間點(diǎn)。
此刻最好看一下系統(tǒng)時(shí)間。接下來(lái)就要演示如何進(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ù)日志開(kāi)始,然后最后選擇時(shí)間點(diǎn)的時(shí)候在縮小范圍。
網(wǎng)頁(yè)題目:sqlserver刪除錯(cuò),誤刪sqlserver數(shù)據(jù)庫(kù)
轉(zhuǎn)載源于:http://ef60e0e.cn/article/dscsdpj.html