繁体   English   中英

如何在 SQL 服务器容器中更改数据库备份的文件所有权

[英]How to change file ownership of DB backup in SQL Server container

我正在按照本指南恢复数据库备份https://docs.microsoft.com/en-us/sql/linux/tutorial-restore-backup-in-sql-server-container?view=sql-server-ver15

我使用 docker cp 命令将数据库备份文件复制到容器 docker exec -it SQLContainer mkdir /var/opt/mssql/backup

docker cp MyDb.bak SQLContainer:/var/opt/mssql/backup/

但是,当尝试通过在 SSMS 中运行以下查询来恢复数据库时,会显示一条错误消息

RESTORE DATABASE MyDB FROM DISK='/var/opt/mssql/backup/MyDB.bak'

Operating system error 5(Access is denied.).

我尝试使用 docker cp -a 进行复制,它将文件所有权设置为与目标相同,但出现此错误。

docker cp -a MyDb.bak SQLContainer:/var/opt/mssql/backup/

Error response from daemon: getent unable to find entry "mssql" in passwd database

我使用的是微软的镜像,我不知道root用户的密码,容器使用mssql用户运行,所以chown也不起作用。 如何更改文件权限以便数据库恢复正常工作?

原来,当我将数据库备份文件从 Windows 主机复制到 Ubuntu 机器时,这些文件归 root 用户所有,所有其他用户都没有读取权限。 在复制到 docker 容器之前向文件添加读取权限可以正常工作,并且服务器能够读取文件。

sudo chmod a+r MyDb.bak

sudo docker cp MyDb.bak SQLContainer:/var/opt/mssql/backup/

我今天也遇到了类似的问题,和这次事件差不多,只是附加了 MDF 和 LDF 文件。

通过在没有 -a 的情况下复制文件之前执行 chmod go+w,我能够让 SQL 服务器将它们视为可写。 在此之前,每当执行任何更新时,我都会收到错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM