Linux 上的 SQL Server
去年夏天,当微软开源副总裁 Wim Coekaerts 在多伦多 LinuxCon 2016 大会上登台时,他并非以对手的身份出现,而是一位长期的 Linux 爱好者,承诺将 Linux 的强大功能带给微软,反之亦然。随着最近面向 Linux 的 SQL Server 的发布,Coekaerts 显然正在产生影响。
面向 Linux 的 PowerShell 和面向 Windows 的 bash 预示着开端,但 SQL Server(最流行的关系数据库之一)的到来为 Linux 厂商带来了一些真正的机会——以及一些难题。
显然,在 Windows Server 之外的其他平台上部署 SQL Server 的机会意味着您可以利用数据库的功能,而无需管理 Windows 主机来实现它。如果您主要是一家 Linux 厂商(或希望成为),并且您有客户希望部署需要 SQL Server 的工作负载和应用程序,那么您现在有了一个真正的 Linux 解决方案。
与此同时,如果您的规模足够大,拥有装满数据库服务器硬件的机柜,那么您可能拥有为实时工作负载提供服务的数据库和支撑数据仓库的数据库。如果您在强大的硬件上运行后者,这些硬件对于管理 Window Server 和 SQL Server 的开销是必要的,那么 Linux 上 SQL Server 的出现可能会为您提供另一种选择。
例如,您可以将资源需求较低的数据仓库转移到资源消耗较少的 Linux 服务器上,并使用 SQL Server。考虑到在 Windows 或 Linux 上运行的 SQL Server 之间没有结构性差异,这可以为您节省硬件和迁移成本。
如果您正在考虑将数据仓库从 SQL Server 转移到 MariaDB 或 Oracle,以利用 Linux 硬件的节省,您就不必担心转换成本。即使您仍然需要支付 SQL Server 许可证费用,您也可以节省转换和迁移的成本来弥补差额。
在难题方面,您可能会问为什么您可能根本需要微软的产品。毕竟,像 MariaDB(或 MySQL)和 PostgreSQL 这样的开源数据库是健壮的、经过良好测试的、免费的,并且由大型社区支持。为什么要将一个历史上闭源的专有工具引入到您的开源环境中?SQL Server 2016 Standard 列表价格约为每个核心 3,717 美元,尽管 Developer 和 Express 版本是免费的,其中 Express 可以处理高达 10GB 的数据驱动应用程序。
由于我们谁也没有生活在一个理想的纯 Linux 世界中,事实是,在企业中,有时您可以——或者必须——使用 SQL Server。有很多可靠的遗留软件使用微软数据库作为后端,这意味着,如果有选择,我们中的许多人会想要一个 Linux 选项。
幸运的是,您可以尝试一下,而无需真正大费周章。您可以在 Red Hat Enterprise Linux 7.3、Ubuntu 16.04、SUSE Linux Enterprise Server v12 SP2 或几乎任何地方以 Docker 容器的形式安装 SQL Server。
安装和运行为了体验 Linux 版 SQL Server,我决定从 Docker 镜像运行它,该镜像运行在一个单独的 Ubuntu 16.04 盒子上,该盒子具有远超所需的 4GB 内存和 4GB 存储空间。我将其设置在远程 Linux 主机上,以便我可以测试远程连接。
从 Docker 拉取 SQL Server 非常简单
$ sudo docker pull microsoft/mssql-server-linux
根据您的网络速度,这将在几分钟内设置好镜像。当拉取完成后,您可以使用一些简单的参数从命令行启动 SQL Server 容器
$ sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=(!)Superpassword' -p
1433:1433 -d microsoft/mssql-server-linux
请注意,该命令包含对微软最终用户许可协议的默认“是”,并且服务器正在公共 SQL Server TCP 端口 1433 上运行。密码必须符合微软的最低准则;否则,容器将启动,但在大约两秒钟后退出。
一个简单的 $ docker ps
显示容器正在运行
CONTAINER ID IMAGE
EDD1E0EBEA6E microsoft/mssql-server-linux
↪STATUS PORTS
↪Up About an hour 0.0.0.0:1433->1433/tcp
访问数据库服务器同样简单
$ sqlcmd -S 192.168.1.15 -U SA -P '(!)Superpassword'
您可以使用一些方便的工具在 Linux、Mac 或 Windows 上连接到 SQL Server 实例。我在 Mac 和 Linux 机器上使用了微软的 sqlcmd
工具来连接到正在运行的数据库实例。
使用 sqlcmd
连接后,您可以开始运行所有您熟悉的 SQL 命令。我创建了一个名为“testdb”的数据库,创建了一个名为“inventory”的表,并添加了三行数据。登录后,我能够快速连接并查询结果

容器化的 SQL Server 可以通过许多其他工具进行管理,包括 Visual Studio Code 和面向 Windows 的 SQL Server Management Studios。Red Hat 和 SUSE 已经在其企业服务器版本中内置了管理工具。
无论您选择如何在 Linux 上部署 SQL Server,您都会发现很容易开始测试它,并感受它在您脑海中不同的数据库场景中可能发挥的作用。您也可能会发现,让一个微软工具在 Linux 上愉快地运行,并没有像甚至就在一年前看起来那样牵强。
资源Linux 上的 SQL Server: https://www.microsoft.com/en-US/sql-server/sql-server-2017
在 Docker 容器中安装 SQL Server: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-docker
在 Ubuntu 上安装 SQL Server: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-ubuntu
为 Linux 安装 SQL 命令行工具: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-ubuntu
Microsoft SQL Server 定价: https://www.microsoft.com/en-us/sql-server/sql-server-2016-pricing