还原数据库 - Linux 上的操作系统错误 5(访问被拒绝。)

yW0*_*K5o -1 sql-server linux restore sql-server-2017

我尝试在 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在此描述选项不能正常工作。

更新

这是另一篇文章,仍然拒绝访问错误。

Dan*_*man 5

该错误表明mssql没有读取备份文件的权限。您可以使用以下chmod示例授予其他用户(文件现有所有者或组以外的用户)对备份文件的读取访问权限。这将允许mssql守护程序用户读取用于恢复的备份文件。

sudo chmod o+r /home/xxxx/DBBackups/xxxx.bak
Run Code Online (Sandbox Code Playgroud)

关于你的评论:

我不知道为什么微软没有授予 mssql 访问所有文件的权限

mssql用户授予更多的权限比它需要在安装过程中,遵循最小特权的安全性原则。因此,默认情况下它对您的主目录没有权限。