我们知道,几个星期前,微软发布了在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的起步的更多相关文章

  1. 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),以及配置过程中遇到的坑的 ...

  2. Linux 上的 SQL Server 2017 的安装指南

    一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...

  3. 在linux上安装 sql server for linux

    在linux上安装 sql server for linux Install SQL Server on Red Hat Enterprise Linux Install SQL Server To ...

  4. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  5. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  6. .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

    今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...

  7. Linux上的SQL Server——预告片

    大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频.

  8. 备份和还原 Linux 上的 SQL Server 数据库

    备份数据库 在下面的示例sqlcmd连接到本地 SQL Server 实例,并采用完整备份的名为的用户数据库demodb. sqlcmd -S localhost -U SA -Q "BAC ...

  9. Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    http://www.cnblogs.com/lavender000/p/6946848.html

随机推荐

  1. MVC Castle依赖注入实现代码

    1.MVc 实现依赖注入 public class WindsorControllerFactory : DefaultControllerFactory { private readonly IKe ...

  2. html 5 实现拖放效果

    在html5中要实现拖放操作,相对于以前通过鼠标操作实现,要简单得多,数据安全性也更有保障.只需要以下几步即可. 给被拖拽元素添加draggable属性,如果是文件拖放. 在拖拽元素的dragstar ...

  3. Lesson 13 The Greenwood Boys

    Text The Greenwood Boys are group of pop singers. At present, they are visiting all parts of the cou ...

  4. 你写的Try...Catch真的有必要么?

    很多人喜欢用Try...Catch把每一个方法都包裹起来,可是真的有必要么? 为什么要这样做?我估计是大家被BUG吓怕了,生怕生产环境出现各种莫名其妙的错误,比如最经典的NullReferenceEx ...

  5. 大白话讲解Promise(三)搞懂jquery中的Promise

    前两篇我们讲了ES6中的Promise以及Promise/A+规范,在Promise的知识体系中,jquery当然是必不可少的一环,所以本篇就来讲讲jquery中的Promise,也就是我们所知道的D ...

  6. 常用网络工具 ipconfig arp traceroute

    如今的计算机是离不开网络的计算机了,因而我们对网络要有一基础的认识.连不上网,程序运行不正常之类的,多少都与网络有关.本文将介绍常用的工具. 网络出问题 ipconfig ping 网络连不上,首先要 ...

  7. Docker:镜像操作和容器操作

    镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...

  8. jsp的 javascript中 嵌套 html 注释

    看到公司的代码,我也是蛋疼了,各种乱. 还发现有很多的jsp的 javascript中 嵌套 html 注释, 这个可行? 我之前可是没用过. 后面查找各种资料发现,这个也是可行的,主要是为了兼容不支 ...

  9. ASP.NET MVC Routing学习笔记(一)

    Routing在ASP.NET MVC中是非常核心的技术,属于ASP.NET MVC几大核心技术之一,在使用Routing之前,得先引入System.Web.Routing,但其实不用这么麻烦,因为在 ...

  10. salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项

    我们都知道,当一条记录进入审批流程以后会自动加锁,apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁. 项目中遇到一个需求,需要当某种情况下对记录进行先解 ...