Sql-Server

還原數據庫 - Linux 上的作業系統錯誤 5(拒絕訪問。)

  • July 31, 2021

我嘗試在 Ubuntu 16 伺服器上使用sqlcmd工具恢復 SQL Server 2017 Express 數據庫。

我的 SQL 命令是:

RESTORE DATABASE [xxxxx] FROM DISK = N'/home/xxxxxx/DBBackups/xxxx.bak' WITH NORECOVERY, MOVE 'xxxx_Data' TO '/var/opt/mssql/data/xxxxx.mdf', MOVE 'xxxx_Log' TO '/var/opt/mssql/data/xxxx_log.ldf'

錯誤資訊是:

BackupDiskFile::OpenMedia: 備份設備 ‘/home/xxxxxx/DBBackups/xxxxxxxx.bak’ 未能打開。作業系統錯誤 5(拒絕訪問。)。

使用本文中描述WITH MOVE選項不起作用。

更新

這是另一篇文章,仍然是訪問被拒絕錯誤。

該錯誤表明mssql沒有讀取備份文件的權限。您可以通過以下範例授予其他使用者(文件的現有所有者或組以外的使用者)對備份文件的讀取權限chmod。這將允許mssql守護程序使用者讀取備份文件以進行恢復。

sudo chmod o+r /home/xxxx/DBBackups/xxxx.bak

關於您的評論:

不知道為什麼微軟沒有給 mssql 訪問所有文件的權限

遵循最小權限的mssql安全原則,在安裝期間不會授予使用者超過其所需的權限。因此,預設情況下它不會對您的主目錄具有權限。

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