docker使用_使用Docker运行SQL Server

现在.net core已经跨平台了,大家也都用上了linux用上了docker。跟.net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始已经支持运行在docker上,也就说现在SQL Serer已经可以运行在linux下了。
下面在Ubuntu 16.4上演示安装并使用SQL Server 2019-CTP3.2

SQL Server in Docker

sudo docker pull mcr.microsoft.com/mssql/server:2019-CTP3.2-ubuntu

使用docker pull命令从docker hub拉取sqlserver 2019-ctp3.2的镜像48cb740f3e61e7e51e87b6eae553aa78.png

sudo mkdir /hd2/sqlserver2019_data

sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=dev@123," -p 14330:1433 --name sqlserver2019 -v /hd2/sqlserver2019_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-CTP3.2-ubuntu

使用docker run 命令启动容器,其中要注意的是使用-v参数指定了sqlserver2019_data目录挂载到容器的/var/opt/mssql目录,这个目录是用来存储数据库文件的,所以最好挂载到外容器外部,避免因为不小心删除容器而丢失数据82ff33c4b55441a5d688c2bc20d985c3.png

sudo docker ps -a

使用docker ps 命令查看容器运行情况,可以看到sqlserver2019正在运行edb2175fe04347f465ce24fc1434b9f7.png

使用命令行连接SQL Server

sudo docker exec -it sqlserver2019 "bash"

使用docker exec命令登录到容器内部执行命令

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "dev@123,"

在容器内部执行命令,打开sqlcmd打开sqlcmd之后我们就可以进行一些数据库的操作了,比如创建数据库,创建表,查询数据等。

CREATE DATABASE TEST_DB

GO

USE TEST_DB

GO

CREATE TABLE Table1 (ID INT, NAME NVARCHAR(50))

GO

Insert Into Table1 Values (0, 'agile')

创建TEST_DB数据库;创建表Table1;插入一行数据;查询表数据fda848dcceb05f93ca75d294fdab0179.png我们使用docker运行的SQL Server同样可以使用Sql Server Management Studio来管理。04cac855d03d6477b67492dc7c8f85e6.png使用服务器ip加端口连接成功后,可以看到刚才新建的数据库TEST_DB跟表TABLE1还有里面的数据都在。能使用SSMS管理后就简单多了跟使用SQL Server其他版本没啥区别。

还原数据库

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

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

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

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

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

sudo docker exec -it sqlserver2019 /bin/bash

e8e171bc1e83f853f7e428a4f219bf88.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

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

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

87b56496d86c15ac2e84c048b803b3c9.pngdd2af483bffc08c2122053c30ca981d1.png
看到RESTORE DATABASE successfully的时候表示数据库还原成功了。让我们使用SSMS看看数据库是否真的还原成功了。353bd65767a13ede3559060c41a3c153.png
可以看到数据库已经还原上去,里面的表,数据都可以正常操作。至此,数据库文件还原成功。

至此SQL Server in Docker的基本操作演示的差不多了,还有更多的高级功能比如配置故障转移集群,复制订阅,Always On等功能跟windows环境配置还有点区别大家可以自己尝试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值