咱们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!所以,对我来讲,是时候跨界在Linux上安装个人第一个SQL安装,这样的话,我就能够在Linux上折腾SQL Server。在这篇文章里,我想给你归纳讲下在Linux上,SQL Server的起步是怎样的。linux
在咱们谈论Linux上的SQL Server的细节以前,我想花几分钟时间谈下微软如何实如今Linux上运行SQL Server。当微软首次公开声称它们在Linux上运行SQL Server的安装,每一个人都会认为SQL Server只是移植到Linux。SQL Server已经经过SQLOS抽象了一些底层操做系统的功能,所以这会有用,但意味着微软须要维护不一样的代码库(一个Windows,一个Linux)。咱们都赞成这是不可行的。sql
为了解决这个问题,如今微软在Linux上运行基于Windows的未修改代码。微软作了以下举动:数据库
”咱们在SQLPAL上嵌入Linux进程运行经典的Windows版的SQL Server,即从Drawbridge(吊桥)演变。”——Slava Oks:ubuntu
SQLPAL是“SQL Server Platform Abstraction Layer(SQL Server平台抽象层)”。Drawbridge自己是微软研究院在2011年9月创建的项目,目的提供新形式虚拟化的应用程序沙盒。目前尚未在Linux上,SQL Server整个架构如何运行的公开信息,所以这里不能讲解得很清楚。但最重要,要记住的事:在Linux上,SQL Server不是一个端口,它是和基于Windows的SQL Server同样。架构
所以,你几乎能够在Linux上的SQL Server上作和Windows上的SQL Server的任何事情。它是可行的,没有任何反作用。固然还不是全部的一切均可以在Linux上的SQL Server作。当前还不支持SQL Server代理,并且尚未像HA/DR(高可用性/故障恢复)的Always ON可用性组。但我假定,微软会在Linux上为咱们提供在这方面提供新的功能和特性。在基于Window上和基于Linux上间建立可用性复制,会是多么惊艳的事!curl
为了在Linux上运行SQL Server,你须要安装一个Linux发行版。微软当前支持Ubuntu 16.04,和RHEL 7.2(红帽子企业版Linux)。在这里我决定简单安装一个Ubuntu虚拟机,而后在它上面安装SQL Server。微软在线帮助会告诉你如何在Linux上安装SQL Server的详细步骤,SQL Server和你就是几个命令的距离:工具
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list sudo apt-get update sudo apt-get install -y mssql-server sudo /opt/mssql/bin/sqlservr-setup
一旦你在Linux上安装了SQL Server,你能够用sytemctl命令验证下SQL Server是否在运行。测试
systemctl status mssql-server
另外你也能够安装Linux上的SQL Server客户端工具,它会在Linux上给你sqlcmd命令执行——很赞!优化
SQL Server安装完成后,你能够在Windows下的SSMS来链接运行在Linux上的SQL Server。你只须要提供Ubuntu虚拟机的IP地址和正确密码的sa帐号。很简单——它就是一个SQL Server实例(和Windows同样)——运行在别的地方——这里是运行在Linux上!链接成功后,如今咱们来运行著名的url
SELECT @@VERSION:
没错,咱们运行在Linux上!还有更精彩的!你能够在Linux上运行常规的基于Windows版SQL Server的备份和还原,也是没有问题。首先你要拷贝一个SQL Server数据库备份到你的Ubuntu虚拟机。默认状况下Ubuntu没有安装SMB,你能够用它来配置用于文件交换的文件共享。首先咱们在Ubuntu上经过安装SMB功能来修正:
sudo apt-get install samba smbpasswd -a klaus
安装好SMB,你能够经过添加下列目录到/etc/samba/smb.conf文件来配置远程文件共享:
[Documents] path = /home/klaus/Documents available = yes valid users = klaus read only = no browsable = yes public = yes writable = yes
在这里我共享/home/klaus/Documents做为共享文件夹。而后你须要重启SMB服务来让远程文件共享可用,从你的Windows系统。
sudo service smbd restart
最后复制你的SQL Server数据库备份到你的Ubuntu虚拟机。当你在你的Ubuntu虚拟机上有了你的数据库备份,最后你能够复制它到/var/opt/mssql/data文件夹,这样的话,SQL Server就能够访问它:
sudo cp AdventureWorks2014.bak /var/opt/mssql/data/AdventureWorks2014.bak
如今当你在SSMS界面里定位到数据库还原,你能够看到SQL Server能够看到你的备份。
而后经过提供备份文件进行常规的RESORE DATABASE命令:
-- Restore AdventureWorks2014 on Linux RESTORE DATABASE [AdventureWorks2014] FROM DISK = N'C:\var\opt\mssql\data\AdventureWorks2014.bak' WITH FILE = 1, MOVE N'AdventureWorks2014_Data' TO N'C:\var\opt\mssql\data\AdventureWorks2014_Data.mdf', MOVE N'AdventureWorks2014_Log' TO N'C:\var\opt\mssql\data\AdventureWorks2014_Log.ldf', STATS = 1 GO
说实话,真的是厉害了,个人哥!!!
你还期待Linux上的SQL Server会有什么呢?我刚说过——几乎一块儿!我已经测试了前沿技术——例如内存优化表,列存储索引,并行执行计划,等待统计等等。——通通支持!!!
这些功能都支持是正常的,由于常规基于Windows的SQL Server——只是在寄宿在Linux进程里运行,剥掉Windows系统的SQL Server。
从技术角度来讲,微软这里这里有了很大的突破。没有人会想到在Steve Ballmer(微软首席执行官)领导下发生这些。微软已经作出了180°的转弯——很是棒!但在Linux上运行SQL Server的商业缘由是什么?咱们来看下:
坦白讲:在Linux上运行SQL Server,这整个想法都有点疯狂,但你进一步想下,愈加以为这有意义——对于一些场景。咱们都赞成,对于你们,在Linux上的SQL Server不会是主要的开发模式。但对一些特殊场景会有意义。
近几个的星期技术真是日新月异啊:首先咱们在SQL Server的标准版里有了开发版的全部功能,如今咱们有了能够在Linux上直接运行的基于Windows的SQL Server。加入SQL Server社区很享受,咱们感觉到近些年的革新。咱们的明天会更精彩!
对于微软SQL Server将来发展方向你有啥想法?欢迎留言!
感谢关注!
http://www.sqlpassion.at/archive/2016/11/28/first-steps-with-sql-server-on-linux/