今天研究了一下微软最新的数据库SQL Server 2017。9月27日其正式发布,看点一堆,而这次发布不仅有传统的Windows版本,也有Linux和Docker的版本,这也意味着SQL Server完成了一次跨平台的飞跃。 不少人会质疑Linux/Docker上的SQL Server究竟有多大意义,这就等于有人问.NET Core在Linux上有多大意义一样。我只能说在开源思想日益横行的IT时代中,微软也在与时俱进!

SQL Server 2017支持的平台环境如下表:

平台 文件系统 安装指南
红帽企业Linux 7.3或7.4工作站,服务器和桌面 XFS或EXT4 安装指南
SUSE Enterprise Linux Server v12 SP2 XFS或EXT4 安装指南
Ubuntu 16.04LTS XFS或EXT4 安装指南
适用于Windows,Mac或Linux的Docker Engine 1.8+ N / A 安装指南

这里面最让我兴奋的还是Docker容器部署,因为效率高,开发测试极为方便。

下面我就如何部署做一个简单的说明。

1.基本环境要求

需要Docker Engine 1.8+ 支持任何平台。

至少2GB的RAM(2017-CU2之前为3.25 GB)。

如果您在Docker for Mac或Windows上运行,请确保为Docker VM分配足够的内存。

还有一点要特别注意:SQL Server 2017目前支持XFS或ext4文件系统,请先用df -T 查看一下自己的文件系统。不然运行会失败!!运行容器后,报错信息如下:

2018-02-21 11:53:33.60 spid7s Error: 17053, Severity: 16, State: 1.
2018-02-21 11:53:33.60 spid7s /var/opt/mssql/data/mastlog.ldf: Operating system error 31(A device attached to the system is not functioning.) encountered.
2018-02-21 11:53:34.61 spid7s Error: 928, Severity: 20, State: 1.
2018-02-21 11:53:34.61 spid7s During upgrade, database raised exception 9002, severity 17, state 0, address 0000000484D0157E. Use the exception number to determine the cause.
2018-02-21 11:53:34.62 spid7s Error: 9002, Severity: 17, State: 0.
2018-02-21 11:53:34.62 spid7s The transaction log for database ‘master’ is full due to ‘NOTHING’.

2.拉取镜像

docker pull microsoft/mssql-server-linux

参考:https://hub.docker.com/r/microsoft/mssql-server-linux/

3.使用Docker运行容器镜像

docker run --name mysqlserver -e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=Test123456' \
-e 'MSSQL_PID=Enterprise' \
-p 1433:1433 \
-v /data/sqlserver:/var/opt/mssql \
-d microsoft/mssql-server-linux

几点说明:

-v /data/sqlserver:/var/opt/mssql :映射数据库文件到主机目录/data/sqlserver。

-e ‘ACCEPT_EULA = Y’:确认您接受最终用户许可协议。

MSSQL_SA_PASSWORD:是一旦容器运行时用于连接到SQL Server的数据库系统管理员(userid =’sa’)密码。重要说明:此密码需要包含至少8个字符,其中至少三个类别为大写字母,小写字母,数字和非字母数字符号。

MSSQL_PID:是容器将与之一起运行的产品ID(PID)或版本。可接受的值:

1.Developer:这将使用Developer Edition运行容器(如果没有提供MSSQL_PID环境变量,这是默认的)
2.Express:这将使用Express Edition运行容器
3.Standard:这将使用标准版运行容器
4.Enterprise:这将使用企业版运行容器
5.EnterpriseCore:这将使用Enterprise Edition Core运行容器
6.<valid product id>:这将运行与PID关联的版本的容器

参考:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables

4.检查运行情况

执行命令:

docker ps -a

sqlserver2017docker 1024x43 - 玩转Docker之SQL Server 2017

说明SQL Server 执行成功。

5.利用SSMS连接数据库

下载地址:https://download.microsoft.com/download/8/8/3/883FD1FA-FE61-4E83-85F9-FA46D4A5B866/SSMS-Setup-CHS.exe

最新版本是17.5的,支持SQL Server2017版本。

启动SSMS后,输入主机IP,用户名sa,密码Test123456,连接数据库,后面的操作跟windows版本一致,很舒服。

 

参考文档:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes

发表评论

邮箱地址不会被公开。 必填项已用*标注