SQL On Linux 初體驗

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

03

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

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方便一些。

sqlcmd實用工具

後序

從簡單的安裝到簡單的使用,可以發現由於Linux操作系統與windows的差別,很多功能會不一樣。

本人最大的感受就是在線安裝非常方便,也非常快。與在windows下安裝體驗完全完全不一樣

在只用SQL On Linux的第一個問題是要理解文件結構,文件結構和windows的機構不同。文件路徑也就不一樣。Linux在系統配置都是以config的文件形式存在,也會有很多不一樣的地方,本文還未進行最爲重要的內容

  • 數據庫運維管理
  • 數據庫性能檢測
  • 數據庫調優

這些內容涉及很廣,不可能在較短的時間內完成。後序有機會再慢慢的體會。

End

作者簡介: Max Shen(阿特),爲了成爲數據專家而努力,萬一實現了呢!有多年的系統運維,數據庫運維經驗。近20年的IT從業經驗,在微軟有超過10年的工作經驗。對數據庫運維調優,排錯,有獨到能力。

發佈了139 篇原創文章 · 獲贊 60 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章