前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server in Docker 还原数据库

SQL Server in Docker 还原数据库

作者头像
星哥玩云
发布2022-08-18 15:28:04
2K0
发布2022-08-18 15:28:04
举报
文章被收录于专栏:开源部署开源部署

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

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

上一回我们启动docker容器的时候使用了-v参数挂账了本地目录/hd2/sqlserver2019_data到容器内目录/var/opt/mssql,所以我们只需要把文件testdb.bak上传到/hd2/sqlserver2019_data目录,docker容器即可访问。

SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库

我使用了下Sql Server Management Studio的还原功能试了下,没有成功,不知是不是SSMS版本的问题。既然SSMS不能还原,那就使用命令行来试试吧。

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

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

代码语言:javascript
复制
sudo docker exec -it sqlserver2019 /bin/bash
SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库

接下来的命令全部在sqlserver2019容器内执行。

使用RESTORE FILELISTONLY命令列出备份数据文件的逻辑名

代码语言:javascript
复制
/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
SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库

使用该命令可以把数据库的数据文件,日志文件名称显示出来。在接下来的恢复操作中有用。

使用RESTORE DATABASE命令还原数据库

代码语言:javascript
复制
/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"'
SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库

看到RESTORE DATABASE successfully的时候表示数据库还原成功了。让我们使用SSMS看看数据库是否真的还原成功了。

SQL Server in Docker 还原数据库
SQL Server in Docker 还原数据库

可以看到数据库已经还原上去,里面的表,数据都可以正常操作。至此,数据库文件还原成功。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用winscp上传bak文件到linux服务器
  • 使用docker exec命令在容器内执行命令
  • 使用RESTORE FILELISTONLY命令列出备份数据文件的逻辑名
  • 使用RESTORE DATABASE命令还原数据库
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档