SQL On Linux初体验

备注:Blog具有时效性, 内容随着更新会发现变化,时间是2017年5月22日

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 testCREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
goINSERT 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_COMPILATIONCREATE 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 '<YourPassword>'

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);
goINSERT INTO inventory VALUES (1, 'banana', 150);
INSERT INTO inventory VALUES (2, 'orange', 154);
GO
SELECT * FROM inventory WHERE quantity > 152;
GO

创建内存表

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

use testdbALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;  ---创建优化文件组ALTER DATABASE testdb  ADD FILEGROUP testdb_mod CONTAINS MEMORY_OPTIMIZED_DATAALTER 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实用工具

后序

从简单的安装到简单的使用,可以发现由于Linux操作系统与windows的差别,很多功能会不一样。

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

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

  • 数据库运维管理
  • 数据库性能检测
  • 数据库调优

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

End

作者简介: Max Shen(阿特),为了成为数据专家而努力,万一实现了呢!有多年的系统运维,数据库运维经验。近20年的IT从业经验,在微软有超过10年的工作经验。对数据库运维调优,排错,有独到能力。

SQL On Linux 初体验相关推荐

  1. 云起实验室有奖征文,精美好礼等你来领——《我的linux初体验》

    简介:云起实验室面向开发者提供免费云产品资源.沉浸式体验环境.手把手操作手册,帮助开发者实现上云第一站,快速学习了解云计算及云产品. 今年七月份,社区平台全面升级,特别推出"乘风者计划&qu ...

  2. esp32 嵌入式linux,初体验乐鑫 ESP32 AT 指令-嵌入式系统-与非网

    乐鑫 AT 固件初体验 初步体验 AT 指令下 TCP 数传,为了验证 AT 命令解析器. 前往乐鑫官网 下载最新版本 AT 固件和 AT 指令集手册. 硬件准备 本文使用乐鑫的 ESP-WROOM- ...

  3. 服务器硬件与 Linux 初体验

    文章目录 一.服务器硬件知识 1.服务器概述 2.服务器分类 2.1 按照体系架构分类 2.1.1 非 x86 服务器 2.1.2 x86 服务器 2.2 按照应用层次分类 2.3 按照机箱结构分类 ...

  4. 服务器与Linux初体验

    服务器硬件知识 1.服务器概述: 电源 电源相当于人体的心脏,需保障电力供应,如果要买服务器,应选择质量好一点的电源. 另外需要注意的是,在实际使用场景中,如果只是配置一个服务器负责核心业务,那么最好 ...

  5. Docker微容器之Alpine Linux 初体验

    0x00 前言 Alpine Linux是一个面向安全的轻型的Linux发行版,基于Alpine Linux的超小型Docker镜像,大小只有5MB,并且可以访问比其他基于BusyBox的镜像更完整的 ...

  6. Linux初体验之VIM

    上古神器vim-基本命令 Vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版,而 gVim 则是其 Windows 版.它的最大特色是完全使用键盘命令进行编辑, ...

  7. 迅飞SDK for Linux 初体验

    今天测试了一下科大迅飞的sdk. 遇到了几个问题. 问题1 我使用语音识别的Demo,当我换了一个语音文件时,识别出来他的结果是这样的. confidence=91 grammar=0 id=noma ...

  8. 网络安全技术入门-kali linux初体验

    特别声明:网络不是法外之地.不要贸然攻击别人操作系统,出现类似事件,本人概不负责.如果你继续阅读本博客.代表你同意并知悉声明内容! kali渗透工具 metasploit metasploit简称ms ...

  9. Kali Linux 2016.2初体验使用总结

    Kali Linux 2016.2初体验使用总结 Kali Linux官方于8月30日发布Kali Linux 2016的第二个版本Kali Linux 2016.2.该版本距离Kali Linux  ...

最新文章

  1. 中科院博士因论文致谢走红后,回到母校演讲再刷屏!网友:是对寒门学子最好的激励...
  2. Go 语言编程 — gorm 的数据完整性约束
  3. golang 结构体和数据库表字段 反射自动映射 sqlmapper库 简介
  4. Android Intent 大全[转载]
  5. Delphi开发单机瘦数据库程序要点
  6. 算法练习day5——190322(快排、建堆、调整堆)
  7. c++字符串输入_【pwn】什么是格式化字符串漏洞?
  8. http的“无连接”指的是_http协议无状态中的 quot;状态quot; 到底指的是什么?...
  9. Linux运维基础命令笔试题
  10. url 编码 js url传参中文乱码解决方案
  11. 大数据分析平台安全的重要性
  12. 移动设备分辨率(终于弄懂了为什么移动端设计稿总是640px和750px)
  13. linux下cpp文件,linux怎么编译cpp文件?
  14. modelica练习
  15. 免费商用无版权素材 免费图库 抠图 PNG 插画素材
  16. 【写作中的复杂名词短语练习题】前置与后置修饰
  17. python机器学习实现oneR算法 以鸢尾data为例
  18. 什么品牌的台灯适合学生用?适合学生党用的台灯推荐
  19. 2004古墓丽影黄金关卡——Lara在电影中:二号门
  20. php file_put_contents 根目录权限,关于php:file_put_contents权限被拒绝

热门文章

  1. mysql简单增删改查(CRUD)
  2. write RE validation
  3. JDBC和servlet设计思路、DAO模式思路、MVC思路粗略总结
  4. 2017.10.23学习知识总结回顾及编写新网页
  5. Docker容器技术-基础与架构
  6. 转载-Oracle ORACLE的sign函数和DECODE函数
  7. javascript(面向对象,作用域,闭包,设计模式等)
  8. Lucene.Net+盘古分词-开发自己的搜索引擎
  9. Python: 如何继承str/string?
  10. python经典书籍:Python编程实战 运用设计模式、并发和程序库创建高质量程序