沈云,资深工程师,微软解决方案专家
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?
标签
立即访问http://market.azure.cn