沈云,資深工程師,微軟解決方案專家
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