Linux上的SQL Server的起步
我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾SQL Server。在这篇文章里,我想给你概括讲下在Linux上,SQL Server的起步是怎样的。
架构
在我们谈论Linux上的SQL Server的细节之前,我想花几分钟时间谈下微软如何实现在Linux上运行SQL Server。当微软首次公开声称它们在Linux上运行SQL Server的安装,每个人都会认为SQL Server只是移植到Linux。SQL Server已经通过SQLOS抽象了一些底层操作系统的功能,因此这会有用,但意味着微软需要维护不同的代码库(一个Windows,一个Linux)。我们都同意这是不可行的。
为了解决这个问题,现在微软在Linux上运行基于Windows的未修改代码。微软做了如下举动:
”我们在SQLPAL上嵌入Linux进程运行经典的Windows版的SQL Server,即从Drawbridge(吊桥)演变。”——Slava Oks:
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上间创建可用性复制,会是多么惊艳的事!
开始折腾Linux上的SQL Server
为了在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上!连接成功后,现在我们来运行著名的
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。
为什么在Linux上运行SQL Server
从技术角度来说,微软这里这里有了很大的突破。没有人会想到在Steve Ballmer(微软首席执行官)领导下发生这些。微软已经做出了180°的转弯——非常棒!但在Linux上运行SQL Server的商业原因是什么?我们来看下:
- 没有系统授权费用(Linux是免费的)
- 对于Linux,微软提供了一个“成熟”的关系数据库技术(当然还有像MySQL的其他可用数据库,但是……)
- ……
坦白讲:在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/
Linux上的SQL Server的起步的更多相关文章
- Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...
- Linux 上的 SQL Server 2017 的安装指南
一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...
- 在linux上安装 sql server for linux
在linux上安装 sql server for linux Install SQL Server on Red Hat Enterprise Linux Install SQL Server To ...
- 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs
原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...
- Linux 上配置 SQL Server Always On Availability Group
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...
- .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库
今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...
- Linux上的SQL Server——预告片
大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频.
- 备份和还原 Linux 上的 SQL Server 数据库
备份数据库 在下面的示例sqlcmd连接到本地 SQL Server 实例,并采用完整备份的名为的用户数据库demodb. sqlcmd -S localhost -U SA -Q "BAC ...
- Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
http://www.cnblogs.com/lavender000/p/6946848.html
随机推荐
- crontab 案例
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6点10分 10 6 * * * date #每两个小时 0 */ ...
- 微信支付开发demo
微信支付的时候,发红包部分的demo,在curl部分还要加上 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); curl_setopt($ch,CURLOPT ...
- 负载均衡的场景下ASP.NET Core如何获取客户端IP地址
在ASP.NET中,使用负载均衡时,可以通过ServerVariables获取客户端的IP地址. var ip = request.ServerVariables["HTTP_X_FORWA ...
- IIS发布站点错误收集(持续更新)
本文主要收集IIS在发布站点过程中遇到的错误,并提供解决办法.并亲测可行.如果您也在使用IIS发布站点的过程中遇到了一些问题,欢迎留言提问. (1.) HTTP错误500.21-Internal Se ...
- mysql定义和调用存储过程
/*定义delimiter为 // */ delimiter // CREATE procedure sp_add3(a int, b int,out c int) begin set c=a+ b; ...
- 每天一个linux命令(23):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- int and string
int转string一.#include <sstream> int n = 0; std::stringstream ss; std::string str; ss<<n; ...
- SpringMVC常用的注解
1. @Controller @Controller用于标识控制层主键,负责注册一个bean到spring上下文,bean的ID默认为首字母小写的类名称,用户也可以自定义. 例如: 方式一: @Co ...
- TSQL 数据类型转换
转换函数 cast 或 convert 将表达式类型转换成另一个数据类型,如果转换失败,将导致整个事务失败.SQL Server 2012 新增两个转换函数:try_cast 和 try_conver ...
- 【Win10 开发】读取PDF文档
关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...
