共计 991 个字符,预计需要花费 3 分钟才能阅读完成。
上一回演示了如果在 Docker 环境下安装 SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上。
使用 winscp 上传 bak 文件到 linux 服务器
上一回我们启动 docker 容器的时候使用了 - v 参数挂账了本地目录 /hd2/sqlserver2019_data 到容器内目录 /var/opt/mssql,所以我们只需要把文件 testdb.bak 上传到 /hd2/sqlserver2019_data 目录,docker 容器即可访问。
我使用了下 Sql Server Management Studio 的还原功能试了下,没有成功,不知是不是 SSMS 版本的问题。既然 SSMS 不能还原,那就使用命令行来试试吧。
使用 docker exec 命令在容器内执行命令
因为 SQL Server 安装在 Docker 容器内,所以执行命令行都需要进入到容器内。
sudo docker exec -it sqlserver2019 /bin/bash
接下来的命令全部在 sqlserver2019 容器内执行。
使用 RESTORE FILELISTONLY 命令列出备份数据文件的逻辑名
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -Q 'RESTORE FILELISTONLY FROM DISK ="/var/opt/mssql/testdb.bak"' | tr -s ' ' | cut -d ' ' -f 1-2
使用该命令可以把数据库的数据文件,日志文件名称显示出来。在接下来的恢复操作中有用。
使用 RESTORE DATABASE 命令还原数据库
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -Q 'RESTORE DATABASE testdb FROM DISK = "/var/opt/mssql/testdb.bak" WITH MOVE "testdb" TO "/var/opt/mssql/data/testdb.mdf" , MOVE "testdb_log" TO "/var/opt/mssql/data/testdb.ldf"'
看到 RESTORE DATABASE successfully 的时候表示数据库还原成功了。让我们使用 SSMS 看看数据库是否真的还原成功了。
可以看到数据库已经还原上去,里面的表,数据都可以正常操作。至此,数据库文件还原成功。
正文完
星哥玩云-微信公众号