我们知道,几个星期前,微软发布了在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. 发布一个自用的ansi转utf8程序

    前几天网上下载了一个国外的源码示例,布署到IIS上,查看网页中文显示乱码,各种不方便,你懂的. 用记事本打开文件,显示是ANSI格式,另存为UTF8格式,保存,再查看页面就正常显示中文了. 文件好多, ...

  2. 使用VS2013进行单元测试

    这次的作业安装了VS2013,对于它的安装过程我就不再细说了,归结起来就是一个字——等,尤其是语言包,最后只好放弃了装语言包,凭借我3级半的英语水平,明白这些没有问题——这仅仅个玩笑话,其实我是用有道 ...

  3. MongoDB 初见指南

    技术若只如初见,那么还会踩坑么? 在系统引入 MongoDB 也有几年了,一开始是因为 MySQL 中有单表记录增长太快(每天几千万条吧)容易拖慢 MySQL 的主从复制.而这类数据增长迅速的流水表, ...

  4. 基于腾讯手Q样式规范Frozen UI

    Frozen UI是一个开源的简单易用,轻量快捷的移动端UI框架.基于手Q样式规范,选取最常用的组件,做成公用离线包减少请求,升级方式友好,文档完善,目前全面应用在腾讯手Q增值业务中. css组件包括 ...

  5. 接口自动化测试的"开胃小菜"---简单黑客攻击手段

    Web应用系统的小安全漏洞及相应的攻击方式 接口自动化测试的"开胃小菜" 1   写作目的 本文讲述一个简单的利用WebAPI来进行一次基本没有破坏力的“黑客”行为. 主要目的如下 ...

  6. Worktile协同特色之二:任务看板管理

    什么是看板 看板是一种使用可视化管理的方式,跟踪任务在整个价值流中流经的不同阶段,通常我们会用带贴纸的白板,或是电子卡片墙.具备如下几个特征:1. 流程可视化 把工作拆分成小块,一张卡片写一件任务,再 ...

  7. HTML 最简单的tips 怎么支持指定DIV显示提示信息

    <body> <style type="text/css"> a.link{position:relative;} a.link div.tips{ bor ...

  8. Ajax_03之接收数据

    1.使用XHR接收服务器返回的数据--text 服务器端:  header('Content-Type:text/plain');  echo 'xxx'; 客户端:  xhr.responseTex ...

  9. ASP.NET Core - ASP.NET Core MVC 的功能划分

    概述 大型 Web 应用比小型 Web 应用需要更好的组织.在大型应用中,ASP.NET MVC(和 Core MVC)所用的默认组织结构开始成为你的负累.你可以使用两种简单的技术来更新组织方法并及时 ...

  10. jQuery通过parent()和parents()方法访问父级元素

    <div class="inputGroup"> <p>2.您的最高学历是?</p> <label><input type=& ...