溫馨提示×

怎樣在Ubuntu上恢復SQL Server數據

小樊
42
2025-09-27 01:28:14
欄目: 云計算

在Ubuntu上恢復SQL Server數據的步驟

一、準備工作

  1. 安裝SQL Server及工具
    確保Ubuntu系統已安裝SQL Server(參考官方文檔),并安裝msodbcsql17客戶端工具(用于sqlcmd連接):

    sudo apt-get update
    sudo apt-get install msodbcsql17
    
  2. 獲取備份文件
    將SQL Server備份文件(.bak,如完整備份、差異備份或事務日志備份)上傳至Ubuntu服務器(如/var/opt/mssql/backup/目錄),并確保當前用戶對目錄有讀取權限。

二、使用sqlcmd命令行工具恢復(最常用)

1. 登錄SQL Server實例

通過sqlcmd工具登錄到本地或遠程SQL Server實例(默認端口1433):

sqlcmd -S localhost -U SA -P 'YourStrongPassword'

(注:SA為SQL Server管理員賬戶,需替換為實際用戶名密碼)

2. 執行恢復命令(以完整備份為例)

若備份文件為完整備份(.bak),且需覆蓋現有數據庫,使用以下命令:

RESTORE DATABASE [YourDatabaseName] 
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_full.bak' 
WITH REPLACE, RECOVERY;
  • REPLACE:強制覆蓋現有同名數據庫;
  • RECOVERY:將數據庫恢復至可用狀態(若需應用后續事務日志,可先用NORECOVERY,最后再執行RECOVERY)。

3. 處理差異備份與事務日志(可選)

若存在差異備份或事務日志備份,需按順序恢復:

-- 恢復差異備份(需在完整備份后執行)
RESTORE DATABASE [YourDatabaseName] 
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_diff.bak' 
WITH DIFFERENTIAL, RECOVERY;

-- 恢復事務日志(需在完整備份+差異備份后執行)
RESTORE LOG [YourDatabaseName] 
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_log.bak' 
WITH RECOVERY;

4. 驗證恢復結果

退出sqlcmd后,可通過以下命令檢查數據庫狀態:

sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "SELECT name, state_desc FROM sys.databases WHERE name = 'YourDatabaseName';"

state_desc顯示為ONLINE,則表示恢復成功。

三、使用SQL Server Management Studio (SSMS)恢復(圖形化操作)

  1. 安裝SSMS
    在Ubuntu上通過apt或下載官方包安裝SSMS(適用于Linux的輕量級版本)。

  2. 連接實例
    打開SSMS,輸入服務器地址(如localhost)、認證方式(SQL Server認證)及賬戶密碼,連接到SQL Server。

  3. 執行恢復流程

    • 右鍵點擊“數據庫”節點→選擇“還原數據庫”;
    • 在“源”選項卡中,選擇“設備”→點擊“添加”→選擇備份文件(.bak);
    • 在“目標”選項卡中,輸入新數據庫名稱(或保留原名稱);
    • 切換至“選項”頁簽,勾選“覆蓋現有數據庫”,點擊“確定”開始恢復。

四、使用第三方工具恢復(無備份場景)

若未備份數據,可嘗試使用第三方工具(如SysTools SQL Recovery)恢復誤刪除或損壞的數據庫文件(.mdf/.ldf):

  1. 下載并安裝工具(需付費);
  2. 選擇目標數據庫文件(.mdf);
  3. 配置恢復選項(如從日志恢復),指定輸出目錄;
  4. 啟動恢復流程,生成SQL腳本或新的數據庫文件。

五、注意事項

  1. 備份優先:恢復前務必確認備份文件的完整性與正確性(可通過RESTORE VERIFYONLY命令驗證);
  2. 權限控制:確保執行恢復操作的用戶具有足夠權限(如sysadmin角色);
  3. 避免覆蓋:恢復前停止對目標數據庫的寫入操作,防止數據沖突;
  4. 測試環境:生產環境恢復前,建議在測試環境驗證流程,避免誤操作導致數據丟失。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女