SQL Server for Linux 下一版本的公共预览

当微软宣布即将发布SQL Server for Linux版本的时候,有些人觉得很兴奋,有些人觉得然并卵,但是既然Gartner在2016年的数据库管理系统魔力象限图中将微软列在了第一位,超过了一直以来的霸主Oracle,那么无论如何这个SQL Server for Linux版本的发布都是值得关注的,微软将这个版本称为SQL Server vNext on Linux。vNext,好直白的期望。

微软在2016年11月中旬正式发布了SQL Server for Linux的第一个公众预览版,这条产品线将支持所有的企业级Linux平台。

在第一个预览版中支持Red Hat Enterprise Linux 7.2和Ubuntu Linux 16.04,并且支持在macOS和Linux中的Docker容器,后续还会支持Suse Linux Enterprise Server,另外,微软承诺Linux上的SQL Server绝对不会是“SQL Server Lite”这样的阉割版数据库,而会是一个具备SQL Server 2016完整功能集的真正的企业级数据库,比如 in-memory OLTP,还有always-on encryption和row-level security这样的企业级安全功能。在现在的预览版中以下这些功能还不支持,但是后续会逐渐支持。

本文中会对SQL Server for Linux的安装、配置、使用做简单的测试,说实话,如果Oracle数据库的安装使用也能这样简单就太好了。

本文使用的测试环境是AWS的一个EC2实例,Red Hat Enterprise Linux 7.2,整个安装过程,从开始下载一直到数据库启动结束,不超过20分钟,这其中还包括了下载RPM包的15分钟。

第一步:用root用户下载安装镜像库的repo文件

curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo

第二步:通过yum安装

sudo yum install -y mssql-server

第三步:设置数据库并启动

That’s it! SQL Server for Linux数据库就安装完毕并正常启动了。

可以通过systemctl来检查mssql-server的服务的启动状态。

安装完毕以后可以通过自带的mssql-conf命令进行一些简单的配置,可配置项不多,主要是监听端口,默认的数据文件所在目录,日志所在目录,备份所在目录等。

如果希望在服务器上直接通过sqlcmd命令行登入数据库,还需要额外安装一个mssql-tools的RPM包,这个安装包里包括sqlcmd和bcp(Bulk import-export utility)。

第一步:用root用户下载安装mssql-tools的repo文件

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo

第二步:通过yum安装

sudo yum install -y mssql-tools

然后就可以通过sqlcmd来登入数据库,并使用Transact-SQL (T-SQL)语言来进行各种操作和管理了。我并非专业的SQL Server DBA,只是浅尝辄止而已。登录以后,创建了一个新数据库testdb,然后进入testdb,创建了一张新表inventory,然后在inventory表中插入了2条记录.

[ec2-user@ip-172-31-11-228 ~]$ sqlcmd -S localhost -U SA -P 'PASSWORD OF SA' 1> SELECT Name from sys.Databases; 2> GO Name ----------- master tempdb model msdb (4 rows affected) 1> create database testdb; 2> go 1> SELECT Name from sys.Databases; 2> go Name ------------ master tempdb model msdb testdb

(5 rows affected) 1> use testdb 2> go Changed database context to 'testdb'. 1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT); 2> GO 1> INSERT INTO inventory VALUES (1, 'banana', 150); 2> INSERT INTO inventory VALUES (2, 'orange', 154); 3> GO (1 rows affected) (1 rows affected) 1> SELECT * FROM inventory WHERE quantity > 152; 2> GO id name quantity ------ ----------- ----------- 2 orange 154 (1 rows affected)

除了sqlcmd命令行之外,在Windows操作系统下有全套的SQL Server Management Studio (SSMS) ,可以直接使用这个具有丰富功能的图形化管理工具来直接管理SQL Server vNext on Linux。

多说一句,由于是使用1433端口连接服务器上的数据库,因此需要在AWS EC2中将该服务器实例所属的Security Group中的Inbound策略中开放TCP 1433端口。

结论

SQL Server vNext on Linux预览版在安装、操作过程中非常顺畅,在后续有更多功能加入以后,应该是企业级数据库非常优秀的选择。

先不说是否会有Oracle用户迁移到SQL Server上,这至少给了现在正在使用SQL Server的客户们更广阔的选择空间,现在他们运行在Windows Server上的SQL Server数据库也可以移植到Linux中了,无论如何,这是一个很大的进步,微软这步要是能早一些迈出可能就更好了。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

由小见大-MySQL脚本部署中的一些策略

在线上环境中部署脚本,可谓是常在河边走,哪有不湿鞋,所以大大小小的案例总结下来,还是会发现一些有趣的地方,这些可以作为操作时的一些参考,仅供参考而已。 第一类...

3316
来自专栏开源优测

性能测试必备监控技能MySQL篇15

前言 性能测试过程中,数据库相关指标的监控是不可忽视的,在这里我们就MySQL的监控配置及重点涉及性能的一些参数进行说明。 在笔者的日常性能测试过程中,重点关注...

32112
来自专栏杨建荣的学习笔记

MySQL中的MVCC(r12笔记第35天)

最近同事也问了我关于MySQL MVCC的一些问题,我觉得这个话题蛮有意思, 而之前似乎也没有总结过,就参考了一些资料,把一些内容摘录出来。 什么是MVCC 以...

3597
来自专栏禁心尽力

关于事务

何为事务? 1.事务是指事务开始到事务结束之间的一组sql语句的操作单元,并且是组内所有sql语句共同完成的业务逻辑。 2.要想使用事务,首先关闭系统自动提交功...

1975
来自专栏FreeBuf

Discuz 5.x/6.x/7.x投票SQL注入分析

作者 diroverflow 看乌云有人爆了这个漏洞:http://www.wooyun.org/bugs/wooyun-2014-071516 感觉应该是e...

2038
来自专栏数据分析

[SQLServer大对象]——FileTable初体验

在我接触FileTable之前,存储文件都是存储文件的链接和扩展名到数据,其实并没有实际的把文件存储到数据库。 FileTable不同于一般的表,他可以存储非结...

3646
来自专栏Java开发者杂谈

Mysql锁初步

存储引擎 要了解mysql的锁,就要先从存储引擎说起。 常用存储引擎列表如下图所示: ? 最常使用的两种存储引擎: Myisam是Mysql的默认存储引擎。当c...

3288
来自专栏决胜机器学习

《高性能MySQL》读书笔记(二) ——MySQL存储引擎概述

《高性能MySQL》读书笔记(二)——MySQL存储引擎概述 (原创内容,转载请注明来源,谢谢) 一、基础信息 mysql将数据库保存在数据目录下...

3795
来自专栏地方网络工作室的专栏

Python3 初学实践案例(8)使用 sqlite3 数据库存储生成的密码,prettytable 的使用

Python3 初学实践案例(8)使用 sqlite3 数据库存储生成的密码,prettytable 的使用 在前面我用 python 脚本实现的 cli 版本...

2705
来自专栏数据库

MySQL数据库性能优化之一

文章来自:博客 数据库属于 IO密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取...

59310

扫码关注云+社区