SQL On Linux 初体验

沈云,资深工程师,微软解决方案专家

SQL On Linux 版本很快就会正式发布,本文进行了安装和常用的操作。

安装篇:安装 SQL 服务和相关组件

安装 SQL 服务 On Linux

首先安装操作系统,本文使用了CentOS 7.2 进行安装,安装过程不表,安装完成后,访问互联网,使用网络安装,使用了 root 用户登录,如果不是 root 用户,需要 sudo 运行。下面我们先来安装 SQL 最重要的引擎 SQL 服务,按照以下步骤:

1、下载 SQL 的配置文件,如果离线安装可以访问https://packages.microsoft.com.去下载相应文件。

sudo su

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

2、安装 SQL,虽然是下载,发现很快就能安装完成。这个和在 windows 下安装的体验完全不一样。太快了快的不敢相信!!!

sudo yum install -y mssql-server

3、安装完成后,运行 mssql-conf setup, 设置 SA 的密码,最好超过 8 位,有大小写和特殊字符

sudo /opt/mssql/bin/mssql-conf setup



4、安装完成后运行命令,可以看到 SQL 运行的情况。

systemctl status mssql-server



5、需要外部应用连接到此服务,需要开放1433端口,可以如下命令:

sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent

sudo firewall-cmd --reload

6、完成安装,以后若要升级 SQL

sudo yum update mssql-server

SQL On Linux 工具安装

1、一样要用超级管理员,下载相应的配置文件

sudo su

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

2、安装 mssql-tools 使用 unixODBC 开发包,先check update下。

sudo yum update

sudo yum install mssql-tools unixODBC-devel



3、确定下载 y

4、接受 license terms y





5、添加 PATH 路径 /opt/mssql-tools/bin/

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

source ~/.bashrc

安装 SQL 代理 mssql-server-agent

1、安装 SQL 代理

sudo yum install mssql-server-agent





2、重启SQL 服务

sudo systemctl restart mssql-server

安装 SQL Server Full-Text Search

1、安装全文检索,名称是 mssql-server-fts

sudo yum install -y mssql-server-fts



使用篇:连接 SQL Server on Linux 和运行 Transact-SQL 查询

使用 SSMS 连接 SQL Server On Linux

1、使用 SSMS 连接 SQL Server on Linux 和 windows 的 SQL 并无差距。打开 SSMS,点连接数据库引擎,输入服务器名或者 IP,用户名和密码,连接



2、连接后





3、使用 SQL 语句进行操作和平常一样

4、 创建数据库 test,并创建文件组和内存表优化组





创建表和插入数据

use test

CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);

go

INSERT INTO inventory VALUES (1, 'banana', 150);

INSERT INTO inventory VALUES (2, 'orange', 154);

GO

SELECT * FROM inventory WHERE quantity > 152;

GO



创建内存表

1、下面代码创建内存表

--提升为快照

ALTER DATABASE CURRENT

SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;

---创建优化文件组

ALTER DATABASE test ADD FILE (name='test_mod1', filename='/var/opt/mssql/data/testmod') TO FILEGROUP memogroup

---创建内存优化表

CREATE TABLE dbo.SalesOrder

(

SalesOrderId integer not null IDENTITY

PRIMARY KEY NONCLUSTERED,

CustomerId integer not null,

OrderDate datetime not null

)

WITH

(MEMORY_OPTIMIZED = ON,

DURABILITY = SCHEMA_AND_DATA);

2、创建本机编译过程

---创建本机编译的存储过程(本机过程)

------------------------------------------------------------------------------

---重要的关键字为 NATIVE_COMPILATION

CREATE PROCEDURE ncspRetrieveLatestSalesOrderIdForCustomerId

@_CustomerId INT

WITH

NATIVE_COMPILATION,

SCHEMABINDING

AS

BEGIN ATOMIC

WITH

(TRANSACTION ISOLATION LEVEL = SNAPSHOT,

LANGUAGE = N'us_english')

DECLARE @SalesOrderId int, @OrderDate datetime;

SELECT TOP 1

@SalesOrderId = s.SalesOrderId,

@OrderDate = s.OrderDate

FROM dbo.SalesOrder AS s

WHERE s.CustomerId = @_CustomerId

ORDER BY s.OrderDate DESC;

RETURN @SalesOrderId;

END;

3、插入数据和执行过程

---执行本机过程

INSERT into dbo.SalesOrder

( CustomerId, OrderDate )

VALUES

( 42, '2013-01-13 03:35:59' ),

( 42, '2015-01-15 15:35:59' );

---对本机编译的存储过程调用 EXECUTE。

DECLARE @LatestSalesOrderId int, @mesg nvarchar(128);

EXECUTE @LatestSalesOrderId =

ncspRetrieveLatestSalesOrderIdForCustomerId 42;

SET @mesg = CONCAT(@LatestSalesOrderId,

' = Latest SalesOrderId, for CustomerId = ', 42);

PRINT @mesg;

4、全部成功完成,证明了不仅普通表支持,内存表也支持。也就是说 SQL On Linux 会提供和 windows Linux 几乎一致性的功能。

使用 SQLCMD On Linux 连接 SQL

连接和使用sqlcmd

1、之前已经安装了sqlcmd工具, 在linux的 terminal窗口输入sqlcmd可以看到sqlcmd命令相关内容



2、连接 sql

sqlcmd -S localhost -U SA -P ''

3、连接后,执行 select * from sys.sysfiles 的结果,查看到 master 数据库的文件地址等信息。已经成功连接到数据库,sqlcmd 命令和在 windows 下的 sqlcmd 一样。

select * from sys.sysfiles



创建数据库和插入数据

1、创建数据库

CREATE DATABASE testdb;

go

2、创建表和插入数据

CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);

go

INSERT INTO inventory VALUES (1, 'banana', 150);

INSERT INTO inventory VALUES (2, 'orange', 154);

GO

SELECT * FROM inventory WHERE quantity > 152;

GO



创建内存表

1、使用以下脚本进行创建内存表

use testdb

ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;

---创建优化文件组

ALTER DATABASE testdb ADD FILEGROUP testdb_mod CONTAINS MEMORY_OPTIMIZED_DATA

ALTER DATABASE testdb ADD FILE (name='test_mod1', filename='/var/opt/mssql/data/testmod') TO FILEGROUP testdb_mod

----

---创建内存优化表

CREATE TABLE dbo.SalesOrder

(

SalesOrderId integer not null IDENTITY

PRIMARY KEY NONCLUSTERED,

CustomerId integer not null,

OrderDate datetime not null

)

WITH

(MEMORY_OPTIMIZED = ON,

DURABILITY = SCHEMA_AND_DATA);

2、具体使用 sqlcmd 可参考如下介绍,作为很多操作还是使用 SSMS 方便一些。

sqlcmd 实用工具

https://msdn.microsoft.com/library/ms162773.aspxsqlcmd 实用工具

后序

从简单的安装到简单的使用,可以发现由于 Linux 操作系统与 windows 的差别,很多功能会不一样。比如群集、日志传送、镜像等等功能

本人最大的感受就是在线安装非常方便,也非常快。与在 windows 下安装体验完全完全不一样

在只用 SQL On Linux 的第一个问题是要理解文件结构,文件结构和 windows 的机构不同。文件路径也就不一样。Linux在系统配置都是以 config 的文件形式存在,也会有很多不一样的地方,本文还未进行最为重要的内容:

数据库运维管理

数据库性能检测

数据库调优

这些内容涉及很广,不可能在较短的时间内完成。后续有机会再慢慢的体会。

光看云社区未使用 Azure?

申请试用

标签

公告 (159)

虚拟机 (70)

解决方案 (69)

云服务 (62)

存储 (57)

网站 (53)

常见问题 (50)

SQL 数据库 (45)

Windows Azure 开源解决方案 (25)

服务总线 (24)

Active Directory (24)

媒体服务 (18)

虚拟网络 (12)

移动服务 (12)

HDInsight (11)

备份 (9)

Azure (7)

网络服务 (7)

站点恢复 (7)

CDN (6)

流量管理器 (6)

MySQL Database on Azure (4)

VPN (2)

blob (2)

DocumentDB (2)

Azure VMSS (2)

Microsoft R Server (2)

SQL (2)

ARM (2)

Azure SQL (2)

数据库 (2)

物联网 (2)

FreeBSD (2)

计费 (2)

Azure 分析服务 (1)

Azure SQL DataBase (1)

SQL Server (1)

数据科学虚拟机镜像 (1)

Visual Studio 2017 虚拟机镜像 (1)

SQL 2017,Azure SQL (1)

共享目录 (1)

SQL On Linux (1)

SQL2016,security (1)

数据库权限,分配 (1)

NSC (1)

Ubuntu Docker,SQL Server (1)

BGP (1)

Azure Linux Disk (1)

Powershell (1)

cache (1)

Json Template (1)

Cisco CSR (1)

Azure ARM (1)

VNet (1)

Storm (1)

HBASE (1)

事件中心 (1)

流处理 (1)

Storm,HBASE,事件中心,流处理 (1)

Azure Python SDK (1)

Azure IoT 中心服务,根证书 (1)

Azure Cosmos DB (1)

VMSS (1)

Microsoft R Server (1)

事件中心捕获 (1)

performance optimization (1)

自定义镜像 (1)

private disk (1)

Vnet (1)

OnPrem (1)

logic server (1)

Infrastructure (1)

auto deployment (1)

站点,访问,实践 (1)

Azure Portal (1)

Azure Resource Template (1)

private storage (1)

AAD (1)

ACS (1)

迁移 (1)

兼容性 (1)

SQL数据库 (1)

AzureSQL (1)

初级 (1)

Visual Studio (1)

SQL Server (1)

PaaS (1)

HTTPS自有证书 (1)

域名管理 (1)

证书部署 (1)

云计算 (1)

AzureStorage (1)

azure-availability (1)

azure-networking1 (1)

IoT 中心 (1)

IoT Suite (1)

VM (1)

CDN Smart Routing (1)

BSD (1)

AppleTV (1)

Apple FairPlay (1)

Azure Stack (1)

Azure云助手 (1)

Cloud Foundry (1)

虚拟机 (1)

PowerShell (1)

移动终端 (1)

服务仪表盘 (1)

立即访问http://market.azure.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容