微軟在2016年11月中旬正式發(fā)布了SQL Server for Linux的第一個(gè)公眾預(yù)覽版,這條產(chǎn)品線將支持所有的企業(yè)級(jí)Linux平臺(tái)。
在第一個(gè)預(yù)覽版中支持Red Hat Enterprise Linux 7.2和Ubuntu Linux 16.04,并且支持在macOS和Linux中的Docker容器,后續(xù)還會(huì)支持Suse Linux Enterprise Server,另外,微軟承諾Linux上的SQL Server絕對(duì)不會(huì)是“SQL Server Lite”這樣的閹割版數(shù)據(jù)庫(kù),而會(huì)是一個(gè)具備SQL Server 2016完整功能集的真正的企業(yè)級(jí)數(shù)據(jù)庫(kù),比如 in-memory OLTP,還有always-on encryption和row-level security這樣的企業(yè)級(jí)安全功能。在現(xiàn)在的預(yù)覽版中以下這些功能還不支持,但是后續(xù)會(huì)逐漸支持。
本文中會(huì)對(duì)SQL Server for Linux的安裝、配置、使用做簡(jiǎn)單的測(cè)試,說實(shí)話,如果Oracle數(shù)據(jù)庫(kù)的安裝使用也能這樣簡(jiǎn)單就太好了。
本文使用的測(cè)試環(huán)境是AWS的一個(gè)EC2實(shí)例,Red Hat Enterprise Linux 7.2,整個(gè)安裝過程,從開始下載一直到數(shù)據(jù)庫(kù)啟動(dòng)結(jié)束,不超過20分鐘,這其中還包括了下載RPM包的15分鐘。
第一步:用root用戶下載安裝鏡像庫(kù)的repo文件
curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo
第二步:通過yum安裝
sudo yum install -y mssql-server
第三步:設(shè)置數(shù)據(jù)庫(kù)并啟動(dòng)
That’s it! SQL Server for Linux數(shù)據(jù)庫(kù)就安裝完畢并正常啟動(dòng)了。
可以通過systemctl來檢查mssql-server的服務(wù)的啟動(dòng)狀態(tài)。
安裝完畢以后可以通過自帶的mssql-conf命令進(jìn)行一些簡(jiǎn)單的配置,可配置項(xiàng)不多,主要是監(jiān)聽端口,默認(rèn)的數(shù)據(jù)文件所在目錄,日志所在目錄,備份所在目錄等。
如果希望在服務(wù)器上直接通過sqlcmd命令行登入數(shù)據(jù)庫(kù),還需要額外安裝一個(gè)mssql-tools的RPM包,這個(gè)安裝包里包括sqlcmd和bcp(Bulk import-export utility)。
第一步:用root用戶下載安裝mssql-tools的repo文件
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
第二步:通過yum安裝
sudo yum install -y mssql-tools
然后就可以通過sqlcmd來登入數(shù)據(jù)庫(kù),并使用Transact-SQL (T-SQL)語言來進(jìn)行各種操作和管理了。我并非專業(yè)的SQL Server DBA,只是淺嘗輒止而已。登錄以后,創(chuàng)建了一個(gè)新數(shù)據(jù)庫(kù)testdb,然后進(jìn)入testdb,創(chuàng)建了一張新表inventory,然后在inventory表中插入了2條記錄.
[ec2-user@ip-172-31-11-228 ~]$ sqlcmd -S localhost -U SA -P 'PASSWORD OF SA'
1> SELECT Name from sys.Databases;
2> GO
Name
-----------
master
tempdb
model
msdb
(4 rows affected)
1> create database testdb;
2> go
1> SELECT Name from sys.Databases;
2> go
Name
------------
master
tempdb
model
msdb
testdb
(5 rows affected)
1> use testdb
2> go
Changed database context to 'testdb'.
1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
2> GO
1> INSERT INTO inventory VALUES (1, 'banana', 150);
2> INSERT INTO inventory VALUES (2, 'orange', 154);
3> GO
(1 rows affected)
(1 rows affected)
1> SELECT * FROM inventory WHERE quantity > 152;
2> GO
id name quantity
------ ----------- -----------
2 orange 154
(1 rows affected)
除了sqlcmd命令行之外,在Windows操作系統(tǒng)下有全套的SQL Server Management Studio (SSMS) ,可以直接使用這個(gè)具有豐富功能的圖形化管理工具來直接管理SQL Server vNext on Linux。
多說一句,由于是使用1433端口連接服務(wù)器上的數(shù)據(jù)庫(kù),因此需要在AWS EC2中將該服務(wù)器實(shí)例所屬的Security Group中的Inbound策略中開放TCP 1433端口。
結(jié)論
SQL Server vNext on Linux預(yù)覽版在安裝、操作過程中非常順暢,在后續(xù)有更多功能加入以后,應(yīng)該是企業(yè)級(jí)數(shù)據(jù)庫(kù)非常優(yōu)秀的選擇。
先不說是否會(huì)有Oracle用戶遷移到SQL Server上,這至少給了現(xiàn)在正在使用SQL Server的客戶們更廣闊的選擇空間,現(xiàn)在他們運(yùn)行在Windows Server上的SQL Server數(shù)據(jù)庫(kù)也可以移植到Linux中了,無論如何,這是一個(gè)很大的進(jìn)步,微軟這步要是能早一些邁出可能就更好了。
如何加入"云和恩墨大講堂"微信群
聯(lián)系客服