1

尝试了多种方法来进行备份。

尝试在容器中将 SA 添加为 root 用户

Azure 数据工作室

BACKUP DATABASE [PrestigeCars] TO  DISK = N'/var/opt/mssql/backup//PrestigeCars-202044-8-4-52.bak' WITH NOFORMAT, NOINIT,  NAME = N'PrestigeCars--2020-04-04T12:04:52', NOSKIP, REWIND, NOUNLOAD,  STATS = 10

消息 3201,级别 16,状态 1,第 1 行
无法打开备份设备“/var/opt/mssql/backup//PrestigeCars-202044-8-4-52.bak”。操作系统错误2(系统找不到指定的文件。)。
消息 3013,级别 16,状态 1,第 1 行
备份数据库异常终止。
总执行时间:00:00:00.217

SSMS

backup database [PrestigeCars]
to  disk = N'/var/opt/mssql/backup//PrestigeCars-202044-6-42-9.bak'
with noformat
    , noinit
    , name = N'PrestigeCars--20200404'
    , noskip
    , rewind
    , nounload
    , compression
    , stats = 10;

SQLCMD

sqlcmd -S localhost,12001 -U SA -Q "BACKUP DATABASE [PrestigeCars] TO DISK = N'/var/opt/mssql/backup/CSCI331-Backup/PrestigeCars-202044-6-42-9.bak' WITH NOFORMAT, NOINIT, NAME = 'PrestigeCars-20200404', SKIP, NOREWIND, NOUNLOAD, STATS = 10"   
4

2 回答 2

2

感谢所有帮助过的人。问题不是缺少文件夹,而是权限问题。

这些文件夹最初是在将备份复制到容器时创建的:

docker cp /Users/YourUsername/CSCI331-Backup/TSQLV4.bak linux-sql2k19:/var/opt/mssql/backup/

*权限为 4 drwxr-xr-**x 3 root root 4096 Jan 31 19:06 backup***

我尝试了各种 Ubuntu create sudo adduser 但没有一个命令 sudo 或 apt-get 起作用。(https://help.ubuntu.com/community/FilePermissions

我发现这个命令以 root 用户身份连接

docker exec -it -u root 874 bash

cd /var/opt/mssql/backup/

光盘..

chmod 777 备份

光盘..

chmod 777 mssql

光盘..

chmod 777 选择

光盘..

chmod 777 变量

关闭容器。我在 SSMS 和 Azure Data Studio 中备份了数据库。双呀!

于 2020-04-05T17:40:15.643 回答
0

/var/opt/mssql/backup标准 SQL Server Linux 映像中不存在目录。您需要首先通过在容器中运行以下命令来创建目录:

mkdir /var/opt/mssql/backup

此外,正如@Larnu 指出的那样,路径中有一个额外的反斜杠。备份命令应该是:

BACKUP DATABASE [PrestigeCars] TO  DISK = N'/var/opt/mssql/backup/PrestigeCars-202044-8-4-52.bak' WITH NOFORMAT, NOINIT,  NAME = N'PrestigeCars--2020-04-04T12:04:52', NOSKIP, REWIND, NOUNLOAD,  STATS = 10;
于 2020-04-04T12:45:31.770 回答