當前位置:首頁 » 編程語言 » sql表刪除恢復

sql表刪除恢復

發布時間: 2024-09-22 20:50:12

sql Server的文件恢復技術

SQL Server有兩種備份方式 一種是使用BACKUP DATABASE將資料庫文件備份出去 另外一種就是直接拷貝資料庫文件mdf和日誌文件ldf的方式 本文中 我們將主要介紹一下後者的備份與恢復 (本文中假定您目前已經能夠熟練使用Server企業管理器和SQL Server查詢分析器)

正常的備份 恢復方式

正常方式下 我們要備份一個資料庫 首先要先將該資料庫從運行的數據伺服器中斷開 或者停掉整個資料庫伺服器 然後復制文件

卸下資料庫的命令

Sp_detach_db 資料庫名

連接資料庫的命令

Sp_attach_db或者sp_attach_single_file_db s_attach_db [@dbname =] ′dbname′ [@filename =] ′filename_n′ [ ] sp_attach_single_file_db [@dbname =] ′dbname′ [@physname =] ′physical_name′

使用此方法可以正確恢復SQL Sever 和SQL Server 的資料庫文件 要點是備份的時候一定要將mdf和ldf兩個文件都備份下來 mdf文件是資料庫數據文件 ldf是資料庫日誌文件

例子

假設資料庫為test 其數據文件為test_data mdf 日誌文件為test_log ldf 下面我們討論一下如何備份 恢復該資料庫

卸下資料庫

sp_detach_db 』test』

連接資料庫

sp_attach_db 』test』 』C:Program FilesMicrosoft SQL ServerMSSQLDatatest_data mdf』 』C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log ldf』sp_attach_single_file_db 』test』 』C:Program FilesMicrosoft SQL ServerMSSQLDatatest_data mdf』

只有mdf文件的恢復技術

由於種種原因 我們如果當時僅僅備份了mdf文件 那麼恢復起來就是一件很麻煩的事情了

如果您的mdf文件是當前資料庫產生的 那麼很僥幸 也許你使用sp_attach_db或者sp_attach_single_file_db可以恢復資料庫 但是會出現類似下面的提示信息

設備激活錯誤 物理文件名 』C:Program FilesMicrosoft SQL ServerMSSQLdatatest_Log LDF』可能有誤

已創建名為』C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log LDF』的新日誌文件

但是 如果您的資料庫文件是從其他計算機上復制過來的 那麼很不幸 也許上述辦法就行不通了 你也許會得到類似下面的錯誤信息

伺服器: 消息 級別 狀態 行

未能打開新資料庫 』test』 CREATE DATABASE 將終止

設備激活錯誤 物理文件名 』d:test_log LDF』 可能有誤

應該怎麼辦呢?下面我們舉例說明恢復辦法

A 我們使用默認方式建立一個供恢復使用的資料庫(如test) 可以在SQL Server Enterprise Manager裡面建立

B 停掉資料庫伺服器

C 將剛才生成的資料庫的日誌文件test_log ldf刪除 用要恢復的資料庫mdf文件覆蓋剛才生成的資料庫數據文件test_data mdf

D 啟動資料庫伺服器 此時會看到資料庫test的狀態為「置疑」 這時候不能對此資料庫進行任何操作

E 設置資料庫允許直接操作系統表 此操作可以在SQL Server Enterprise Manager裡面選擇資料庫伺服器 按右鍵 選擇「屬性」 在「伺服器設置」頁面中將「允許對系統目錄直接修改」一項選中 也可以使用如下語句來實現

use master go sp_configure 』allow updates』 go reconfigure with override go

F 設置test為緊急修復模式

update sysdatabases set status= where dbid=DB_ID(』test』)

此時可以在SQL Server Enterprise Manager裡面看到該資料庫處於「只讀置疑離線緊急模式」可以看到資料庫裡面的表 但是僅僅有系統表

G 下面執行真正的恢復操作 重建資料庫日誌文件

dbcc rebuild_log(』test』 』C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log ldf』)

執行過程中 如果遇到下列提示信息

伺服器: 消息 級別 狀態 行

未能排它地鎖定資料庫以執行該操作

DBCC執行完畢 如果DBCC輸出了錯誤信息 請與系統管理員聯系

說明您的其他程序正在使用該資料庫 如果剛才您在F步驟中使用SQL Server Enterprise Manager打開了test庫的系統表 那麼退出SQL Server Enterprise Manager就可以了

正確執行完成的提示應該類似於

警告 資料庫 』test』的日誌已重建 已失去事務的一致性 應運行DBCC CHECKDB以驗證物理一致性 將必須重置資料庫選項 並且可能需要刪除多餘的日誌文件

DBCC執行完畢 如果DBCC輸出了錯誤信息 請與系統管理員聯系

此時打開在SQL Server Enterprise Manager裡面會看到資料庫的狀態為「只供DBO使用」 此時可以訪問資料庫裡面的用戶表了

H 驗證資料庫一致性(可省略)

dbcc checkdb(』test』)

一般執行結果如下

CHECKDB發現了 個分配錯誤和 個一致性錯誤(在資料庫 』test』 中)

DBCC執行完畢 如果DBCC輸出了錯誤信息 請與系統管理員聯系

I 設置資料庫為正常狀態

sp_dboption 』test』 』dbo use only』 』false』

假如沒有出錯 現在你就可以正常的使用恢復後的資料庫啦

J 最後一步 我們要將步驟E中設置的「允許對系統目錄直接修改」一項恢復 因為平時直接操作系統表是一件比較危險的事情 當然 我們可以在SQL Server Enterprise Manager裡面恢復 也可以使用如下語句完成

lishixin/Article/program/SQLServer/201311/22357

❷ plsql怎麼恢復刪除的表

方法一:

1.打開Flash存儲的許可權
ALTER TABLE tableName ENABLE row movement ;
2.把表還原到指定時間點
flashback table tableName to timestamp to_timestamp('2018-03-16 10:40:00','yyyy-mm-dd hh24:mi:ss');
後面的參數為要還原的時間點

方法二:

利用ORacle的快照進行查找某個時間點的數據
s e l e c t * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '100' MINUTE)



s e l e c t * from tableName as of timestamp to_timestamp('2018-03-16 11:40:00','YYYY-MM-DD HH24:MI:SS');

這樣可以查詢到指定的時間段的數據,再把查詢到的數據復制到原來的表中。

方法三:

刪除表後,可以採用如下操作:在 查詢表user_recyclebin最近操作過的表名稱,然後用閃回(只能用於10G及以上版本)。

s e l e c t * from user_recyclebin;

FLASHBACK TABLE TABLE_NAME TO BEFORE DROP;

如果是刪了或修改裡面的數據,可以先建立一個快表將刪除修改之前狀態的數據找回到這個表中:

CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小時前的),減去的時間可以自己定。

方法四:

SCN提供了Oracle的內部時鍾機制,可被看作邏輯時鍾,這對於恢復操作是至關重要的
注釋:Oracle 僅根據 SCN 執行恢復。
它定義了資料庫在某個確切時刻提交的版本。在事物提交時,它被賦予一個唯一的標示事物的SCN 。一些人認為 SCN 是指, System Commit Number ,而通常 SCN 在提交時才變化,所以很多情況下,這兩個名詞經常被交替使用。
究竟是哪個詞其實對我們來說並不是最重要的,重要的是我們知道 SCN 是 Oracle 內部的時鍾機制, Oracle 通過 SCN 來維護資料庫的一致性,並通過SCN 實施 Oracle 至關重要的恢復機制。

❸ 用SQL語句怎麼刪除表中的所有數據

要從SQL中刪除表中的所有數據,可以使用`DELETE`語句。以下是如何操作的:

1.如果你想刪除整個表中的所有行,直接使用:

DELETEFROMtable_name;

或者

DELETE*FROMtable_name;

這會刪除指定表(如`Customers`)中的所有行,但不會刪除表結構。

2.如果你想保持表結構,但希望快速且不可恢復地刪除所有數據,可以使用`TRUNCATETABLE`語句:

TRUNCATETABLECustomers;

`TRUNCATE`操作會立即清空表,不記錄日誌,且速度比`DELETE`快,但一旦數據被刪除,無法恢復。

3.如果你需要刪除特定條件下的數據,可以結合`WHERE`子句,如:

DELETEFROMCustomersWHEREcust_id=10000006;

這將僅刪除滿足條件的行。

4.要完全刪除表(包括結構和數據),應使用`DROP`語句,但請注意,這將永久刪除表,無法恢復:

DROPTABLEtable_name;

總的來說,`DELETE`、`TRUNCATE`和`DROP`各有其適用場景,根據需求選擇合適的操作。

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

熱點內容
android顯示電量 發布:2024-09-22 23:16:48 瀏覽:282
pythonasciitoutf8 發布:2024-09-22 23:15:50 瀏覽:231
8110pos機後台密碼是多少 發布:2024-09-22 22:59:10 瀏覽:607
數理演算法 發布:2024-09-22 22:54:33 瀏覽:52
python學習視頻 發布:2024-09-22 22:49:37 瀏覽:776
智聯尊享是什麼配置 發布:2024-09-22 22:48:40 瀏覽:588
滄州的編程 發布:2024-09-22 22:18:58 瀏覽:836
安卓為什麼切換到鴻蒙有些軟體不見了 發布:2024-09-22 22:14:48 瀏覽:895
什麼可以緩解壓力 發布:2024-09-22 21:54:03 瀏覽:51
android線程調用 發布:2024-09-22 21:33:11 瀏覽:798