當SQL Server數據庫損壞且無法修復時,可以從最近的備份中還原它以恢復對象和數據。但是,當您需要執行對象級恢復而不是執行完整的數據庫備份時,就會出現問題。
換句話說,可能需要從數據庫備份而不是整個數據庫中還原特定表或任何其他對象。但是,沒有直接的方法可以執行對象級恢復。
本文討論了一些方法來恢復SQL中的特定表或視圖。此外,它還討論了如何使用SQL修復軟件來安全恢複選擇性數據庫對象。
在SQL中執行對象級恢復的方法
在這裡,我們將討論兩種手動方法以及一種在SQL Server中恢復對象的自動解決方案。
手動方法
方法1:將備份還原到其他數據庫並導入數據
注意: 僅當您已對SQL Server數據庫進行了完整備份時,此方法才有效。
在SQL Server中,您可以通過執行以下步驟來選擇性地恢復單個數據庫對象:
- 將備份還原到其他數據庫。
- 通過使用SQL Server導入和導出嚮導導入數據。
讓我們詳細地完成每個步驟:
步驟1:將備份還原到其他數據庫
在此步驟中,我們將還原「 DBLogTest」的備份並將其另存為名為「 TestDB」的新數據庫。
- 在SQL Server Management Studio(SSMS)中,連接到SQL Server的實例。
- 在「對象資源管理器」下,將鼠標懸停在「數據庫」上並右鍵單擊它,然後單擊「還原數據庫」。

圖1:還原SQL數據庫
- 從「還原數據庫」窗口中,選擇設備選項下的數據庫,然後單擊瀏覽(…) 按鈕。

圖2:選擇「從設備」選項
- 在「指定備份」 對話框中,單擊「添加」按鈕。

圖3:單擊添加以選擇數據庫備份文件
- 在「查找備份文件」 對話框中,單擊要還原的數據庫的備份文件。在我們的示例中,選擇DBLogTest.bak文件。單擊確定。

圖4:選擇備份文件
- 所選備份文件的位置將添加到「指定備份」框中的「備份位置:」下。單擊確定。

- 所選的備份文件(.bak)詳細信息將添加到「還原數據庫」嚮導中。在嚮導中,在「目標」下的「數據庫」文本框中鍵入新數據庫「 TestDB」的名稱。

圖6:將數據庫備份還原到新數據庫
如果大家在學習中遇到困難,想找一個python學習交流環境,可以加入我們的python裙,關注小編,並私信「01」即可進裙,領取python學習資料,會節約很多時間,減少很多遇到的難題。
- 現在,單擊「選擇頁面」下的「選項」 ,然後選擇「還原前進行日誌備份」複選框,然後單擊「確定」。

圖7:進行尾日誌備份
- 出現消息「數據庫’TestDB’的還原成功完成」時,單擊「確定」 。

圖8:還原數據庫完成的消息
執行這些步驟將使用其他名稱將數據庫還原到SQL Server。
步驟2:使用SQL Server導入和導出嚮導導入數據
在此步驟中,我們將使用「 SQL Server導入和導出嚮導」。該嚮導有助於在流行的數據格式(例如數據庫(SQL Server和Access),Excel電子表格和文本文件)之間導入和導出特定對象。
若要使用SQL Server導入和導出嚮導導入數據,請按照下列步驟操作:
- 右鍵單擊新數據庫「 TestDB」,單擊「任務」,然後單擊「導入數據」。

圖9:選擇導入數據選項
- 點擊下一步。

圖10:SQL Server導入和導出嚮導
- 從「數據源」下拉列表中,選擇有助於連接到數據源的數據提供程序,然後單擊「下一步」。

圖11:選擇數據源
- 選擇服務器名稱和您需要從中導入數據的數據庫(在我們的示例中為TestDB),然後單擊Next。

圖12:輸入服務器和數據庫詳細信息
- 當提示您選擇複製數據的目的地時,請從下拉列表中選擇數據源。這將選擇您要保存對象(表或視圖)的目的地。

圖13:選擇將數據保存到的目標位置
- 單擊「新建」 以創建一個要在其中放置所選數據庫對象(表或視圖)的數據庫,然後選擇「下一步」。

圖14:指定目標的詳細信息
- 在「指定表複製或查詢」對話框中,選擇以下任一選項,然後單擊「 下一步」。
- 從一個或多個表或視圖複製數據:此選項從現有表或視圖複製所有數據。
- 編寫查詢以指定要傳輸的數據:此選項要求您編寫查詢以從源數據庫導入特定數據。
注意:使用複製數據庫嚮導複製多個SQL數據庫或對象(表和視圖除外)。

圖15:從表複製數據或編寫查詢
在此示例中,我們選擇了’從一個或多個表或視圖複製數據‘選項。
- 列出了包含「 TestDB」數據庫的所有表的窗口。選擇要從源複製到目標的單個或多個表。另外,雙擊「目標」下添加的表,然後重命名。例如,我們將「 dbo.Details」表重命名為「 dbo.NewDetails」。

圖16:選擇要還原的表
- 在「保存並運行程序包」窗口中,選擇以下任一選項:
- 立即運行
- 保存SSIS包

圖17:「保存並運行包」窗口
- 要繼續,請點擊下一步按鈕。
- 單擊「完成」將數據從所選表導入到指定的目標。

圖18:完成導入過程
- 所選表及其數據將被複制到目標位置。

圖19:複製到目標的選定表數據
注意:此方法有一個缺點。使用此方法,您將需要還原完整的數據庫備份,而不是直接選擇要還原的對象。
方法2:還原事務日誌(T-Log)備份和導入數據
另一種方法是執行特定對象的時間點恢復。為此,請將該RESTORE LOG命令與一個STOPAT子句一起使用,該子句有助於將T-Log備份還原到對象被刪除或數據被刪除的特定時間。
| 從FILE = 4,NORECOVERY,STOPAT =’2021年3月19日02:00 PM’的DBLogTest恢復日誌TestDB; |
警告!此命令會將所有打開的事務回滾到特定時間。
將事務日誌備份還原到某個時間點後,一旦丟失數據,就可以將數據導入到新數據庫中。
方法3:使用SQL恢復工具
通過使用用於MS SQL軟件的Stellar Repair在SQL Server中執行對象級恢復,可以節省大量時間和精力。就是這樣:
- 啟動軟件。單擊「瀏覽」或「搜索」以選擇要修復的損壞的SQL數據庫MDF文件。

圖20:選擇損壞的SQL數據庫文件
- 單擊修復開始修復文件。

圖21:修復SQL數據庫文件
- 該軟件會預覽所有可恢復的數據庫對象,包括表,視圖,存儲過程,觸發器等。選擇要恢復的對象,然後在「文件」菜單上單擊「 保存」 。

圖22:預覽可恢復的數據庫對象
- 將打開「保存數據庫」 窗口,其中包含用於以MDF,CSV,HTML和XLS文件格式保存所選對象的選項。此外,您可以選擇將恢復的數據保存在新數據庫或現有數據庫中。

圖23:文件保存選項
結論
當數據庫表或其他SQL Server對象損壞或被意外刪除時,可以通過執行對象級恢復而不是還原數據庫來節省時間和精力。不幸的是,沒有直接的方法可以在SQL Server中執行對象級恢復。但是,使用本文中討論的手動方法可以幫助您恢復特定的表或其他對象。但是,這些方法有一定的局限性。更好的選擇是使用3次聚會SQL恢復工具,可以幫助你在選擇性還原特定的數據庫對象,無需恢復完整或事務日誌備份。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/281152.html
微信掃一掃
支付寶掃一掃