SQL Server in Docker - 还原数据库

本文介绍如何在Docker环境中还原SQLServer数据库备份文件。通过Winscp将.bak文件上传到Linux服务器指定目录,利用docker exec命令进入容器并执行RESTOREFILELISTONLY和RESTOREDATABASE命令完成数据库还原。

SQL Server in Docker 还原数据库

上一会演示了如果在Docker环境下安装SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上。

使用winscp上传bak文件到linux服务器

上一回我们启动docker容器的时候使用了-v参数挂账了本地目录/hd2/sqlserver2019_data到容器内目录/var/opt/mssql,所以我们只需要把文件testdb.bak上传到/hd2/sqlserver2019_data目录,docker容器即可访问。
o_TIM%e6%88%aa%e5%9b%be20190731144335.jpg
我使用了下Sql Server Management Studio的还原功能试了下,没有成功,不知是不是SSMS版本的问题。既然SSMS不能还原,那就使用命令行来试试吧。

使用docker exec命令在容器内执行命令

因为SQL Server安装在Docker容器内,所以执行命令行都需要进入到容器内。

sudo docker exec -it sqlserver2019 /bin/bash

o_QQ%e6%88%aa%e5%9b%be20190801001331.png
接下来的命令全部在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

o_TIM%e6%88%aa%e5%9b%be20190731154320.jpg
使用该命令可以把数据库的数据文件,日志文件名称显示出来。在接下来的恢复操作中有用。

使用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"'

o_TIM%e6%88%aa%e5%9b%be20190731154342.jpg
o_TIM%e6%88%aa%e5%9b%be20190731154432.jpg
看到RESTORE DATABASE successfully的时候表示数据库还原成功了。让我们使用SSMS看看数据库是否真的还原成功了。
o_TIM%e6%88%aa%e5%9b%be20190731154250.jpg
可以看到数据库已经还原上去,里面的表,数据都可以正常操作。至此,数据库文件还原成功。

转载于:https://www.cnblogs.com/kklldog/p/sqlserver_in_docker_restore.html

好的,我可以帮你解答这个问题。 首先,在 Linux 系统上部署 Docker,需要先安装 Docker,可以参考 Docker 的官方文档进行安装。 接下来,从 Docker Hub 上获取 SQL Server 镜像,并在容器中运行 SQL Server。可以使用以下命令: ``` docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest ``` 其中,`ACCEPT_EULA` 参数需要设置为 `Y`,表示接受 Microsoft 的许可协议;`SA_PASSWORD` 参数需要设置为你自己的密码;`-p` 参数表示将容器的 1433 端口映射到主机的 1433 端口;`--name` 参数表示容器的名称;`-d` 参数表示以后台模式运行容器;`mcr.microsoft.com/mssql/server:2019-latest` 是 SQL Server 的镜像名称。 接着,将备份文件拷贝到容器中,并使用 SQL Server Management Studio 或者 SQLCMD 工具还原数据库备份。可以使用以下命令将备份文件拷贝到容器中: ``` docker cp your_backup_file.bak sqlserver:/var/opt/mssql/data/ ``` 其中,`your_backup_file.bak` 是你的数据库备份文件名称,`sqlserver` 是容器的名称。 最后,在容器中使用 SQL Server Management Studio 或者 SQLCMD 工具还原备份文件,可以参考以下命令: ``` /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'yourStrong(!)Password' -Q 'RESTORE DATABASE your_database_name FROM DISK = "/var/opt/mssql/data/your_backup_file.bak"' ``` 其中,`your_database_name` 是你要还原数据库名称,`your_backup_file.bak` 是数据库备份文件名称。 希望以上内容能够帮助你部署 Docker SQL Server 容器并还原数据库备份。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值