Sql-Server

sql server - 在 Linux 伺服器實例上恢復 Windows 數據庫備份文件

  • July 10, 2018

我需要使用 SQL Server 實例,但是我的工作區執行 Linux,並且提供給我的數據庫備份在 Windows 上執行。

我成功地在我的 Linux 環境上安裝了 SQL Server,並且我正在使用 DBeaver 來訪問它,我遇到的主要問題是當我嘗試在我的 SQL Server 實例中恢復這個 .bkp 文件時。

我正在嘗試使用我在本網站的答案中讀到的這個 SQL 命令恢復數據庫,但是我需要邏輯數據文件名和邏輯數據日誌。所以我執行了下一個 SQL 命令。

RESTORE DATABASE FILELISTONLY
FROM DISK = '/var/tmp/(redacted).bkp';

我收到 SQL 錯誤 5133

SQL Error [5133][S0001]: Directory lookup for the file "D:\SQL2012\DATA\(redacted).mdf" failed with the operating system error 2(The system cannot find the file specified.).

這個文件可以恢復嗎?如果是這樣,我做錯了什麼?

提前致謝。

根據您使用的版本.. 如果您遇到錯誤,則可能是您需要向 Microsoft 報告的錯誤。

您仍然可以sp_restore_filelistonly嘗試無證文件,但正如布倫特在他的回答中所說,它只是一個包裝器:

EXEC sp_restore_filelistonly
   @device_type = 'DISK',
   @backup_path = '/var/tmp/(redacted).bkp';

如果上述方法不起作用,那麼請務必向 Microsoft 打開錯誤報告。

它對我有用 - 我已經測試過(Microsoft SQL Server 2017 (RTM-CU4) (KB4056498) - 14.0.3022.28 (X64) Feb 9 2018 19:39:09 Copyright (C) 2017 Microsoft Corporation Developer Edition(64-bit)在Linux(Ubuntu 16.04.3 LTS)上),對我來說它同時使用(恢復filelistonly和使用未記錄的sp)

  • 從磁碟恢復 filelistonly = ‘/var/opt/mssql/backup/dbname_(FULL)_20170108_020026.bak’

在此處輸入圖像描述

  1. Remote Desktop Connection使用、putty會話或您選擇的其他方法導航到您的 Linux機器。

  1. 執行SQLCMD以連接到SQL Servicebash 視窗中。

sqlcmd -S localhost -U SA

如果需要,您可以替換 -S 和 -U 參數。

以下範例使用 SA 使用者連接到本地 SQL Server 實例。提示時輸入密碼,或通過添加 -P 參數指定密碼。


  1. 進入 SQLCMD 後,在 >1 提示符下,嘗試以下操作:

RESTORE DATABASE FILELISTONLY
FROM DISK = '/var/tmp/(redacted).bkp';

這應該為您提供要恢復的文件列表。現在您仍然可以在 SQLCMD 中嘗試此命令,並根據需要替換值。

RESTORE DATABASE YourDB
FROM DISK = '/var/tmp/(redacted).bkp'
WITH MOVE '(redacted).mdf' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE '(redacted).ldf' TO '/var/opt/mssql/data/YourDB_Log.ldf'
GO

這也可以通過GUI 完成。

MSDN 來源:在 Linux 上恢復您的數據庫

Graham Okely 的 MS SQL 提示,其中包含有關 Linux 備份和 SQLCMD 的大量附加資訊。

所以答案與這個有關。

引用自:https://dba.stackexchange.com/questions/207871