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 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 '<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);
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方便一些。
后序
从简单的安装到简单的使用,可以发现由于Linux操作系统与windows的差别,很多功能会不一样。
本人最大的感受就是在线安装非常方便,也非常快。与在windows下安装体验完全完全不一样
在只用SQL On Linux的第一个问题是要理解文件结构,文件结构和windows的机构不同。文件路径也就不一样。Linux在系统配置都是以config的文件形式存在,也会有很多不一样的地方,本文还未进行最为重要的内容
- 数据库运维管理
- 数据库性能检测
- 数据库调优
这些内容涉及很广,不可能在较短的时间内完成。后序有机会再慢慢的体会。
End
作者简介: Max Shen(阿特),为了成为数据专家而努力,万一实现了呢!有多年的系统运维,数据库运维经验。近20年的IT从业经验,在微软有超过10年的工作经验。对数据库运维调优,排错,有独到能力。