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年的工作經驗。對數據庫運維調優,排錯,有獨到能力。