1.xshell连接工具
使用xshell远程连接工具连接服务器。
2.将bak文件放到home文件夹
3.将bak文件复制到docker容器中
docker cp /V7_Test_XBT_05071041.bak mysqlserver2017:/
mqsqlserver2017 是docker容器中 SQL server镜像的名称。
4.进入docke容器
docker exec -i -t mssql2017 /bin/bash
5.列出bak文件的逻辑名
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '你的数据库密码' -Q 'RESTORE FILELISTONLY FROM DISK = "/V7_Test_XBT_05071041.bak"' | tr -s ' ' | cut -d ' ' -f 1-2
结果:
-
/opt/mssql-tools/bin/sqlcmd
:- 这是 SQL Server 命令行工具的路径。
/opt/mssql-tools/bin/
是这个工具在 Linux 系统上的默认安装位置(或者用户自定义的安装位置)。 sqlcmd
是一个命令行工具,允许用户连接到 SQL Server 数据库并执行查询。
- 这是 SQL Server 命令行工具的路径。
-
-S localhost
:- 这指定了 SQL Server 的实例名称或地址。在这里,它连接到运行在当前机器(
localhost
)上的 SQL Server 实例。
- 这指定了 SQL Server 的实例名称或地址。在这里,它连接到运行在当前机器(
-
-U sa
:- 这指定了用于连接到 SQL Server 的用户名。在这里,它使用
sa
账户,这是 SQL Server 的默认系统管理员账户。
- 这指定了用于连接到 SQL Server 的用户名。在这里,它使用
-
-P '你的数据库密码'
:- 这指定了与上述用户名关联的密码。注意这里的
'你的数据库密码'
是一个占位符,你应该将其替换为实际的sa
账户密码。
- 这指定了与上述用户名关联的密码。注意这里的
-
-Q 'RESTORE FILELISTONLY FROM DISK = "/V7_Test_XBT_05071041.bak"'
:- 这是一个 SQL 查询,它使用
RESTORE FILELISTONLY
命令来查询.bak
备份文件中的内容。具体来说,它会列出备份文件中的所有文件和文件组,但不会实际恢复它们。 /V7_Test_XBT_05071041.bak
是备份文件的路径。
- 这是一个 SQL 查询,它使用
6.还原数据库
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Admin@123' -Q 'RESTORE DATABASE V7_Test_XBT FROM DISK = "/V7_Test_XBT_05071041.bak" WITH MOVE "etourTSMS_2011" TO "/var/opt/mssql/data/V7_Test_XBT.mdf" , MOVE "etourTSMS_2011_log" TO "/var/opt/mssql/data/V7_Test_XBT.ldf"'