Linux上的SQL Server的起步

咱們知道,幾個星期前,微軟發佈了在Linux上直接運行的SQL Server第一個公開CTP版本!所以,對我來講,是時候跨界在Linux上安裝個人第一個SQL安裝,這樣的話,我就能夠在Linux上折騰SQL Server。在這篇文章裏,我想給你歸納講下在Linux上,SQL Server的起步是怎樣的。linux

架構

在咱們談論Linux上的SQL Server的細節以前,我想花幾分鐘時間談下微軟如何實如今Linux上運行SQL Server。當微軟首次公開聲稱它們在Linux上運行SQL Server的安裝,每一個人都會認爲SQL Server只是移植到Linux。SQL Server已經經過SQLOS抽象了一些底層操做系統的功能,所以這會有用,但意味着微軟須要維護不一樣的代碼庫(一個Windows,一個Linux)。咱們都贊成這是不可行的。sql

爲了解決這個問題,如今微軟在Linux上運行基於Windows的未修改代碼。微軟作了以下舉動:數據庫

」咱們在SQLPAL上嵌入Linux進程運行經典的Windows版的SQL Server,即從Drawbridge(吊橋)演變。」——Slava Oks:ubuntu

SQLPAL是「SQL Server Platform Abstraction Layer(SQL Server平臺抽象層)」。Drawbridge自己是微軟研究院在2011年9月創建的項目,目的提供新形式虛擬化的應用程序沙盒。目前尚未在Linux上,SQL Server整個架構如何運行的公開信息,所以這裏不能講解得很清楚。但最重要,要記住的事:在Linux上,SQL Server不是一個端口,它是和基於Windows的SQL Server同樣。架構

所以,你幾乎能夠在Linux上的SQL Server上作和Windows上的SQL Server的任何事情。它是可行的,沒有任何反作用。固然還不是全部的一切均可以在Linux上的SQL Server作。當前還不支持SQL Server代理,並且尚未像HA/DR(高可用性/故障恢復)的Always ON可用性組。但我假定,微軟會在Linux上爲咱們提供在這方面提供新的功能和特性。在基於Window上和基於Linux上間建立可用性複製,會是多麼驚豔的事!curl

開始折騰Linux上的SQL Server

爲了在Linux上運行SQL Server,你須要安裝一個Linux發行版。微軟當前支持Ubuntu 16.04,和RHEL 7.2(紅帽子企業版Linux)。在這裏我決定簡單安裝一個Ubuntu虛擬機,而後在它上面安裝SQL Server。微軟在線幫助會告訴你如何在Linux上安裝SQL Server的詳細步驟,SQL Server和你就是幾個命令的距離:工具

sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
sudo apt-get update
sudo apt-get install -y mssql-server
sudo /opt/mssql/bin/sqlservr-setup

一旦你在Linux上安裝了SQL Server,你能夠用sytemctl命令驗證下SQL Server是否在運行。測試

systemctl status mssql-server

另外你也能夠安裝Linux上的SQL Server客戶端工具,它會在Linux上給你sqlcmd命令執行——很贊!優化

SQL Server安裝完成後,你能夠在Windows下的SSMS來鏈接運行在Linux上的SQL Server。你只須要提供Ubuntu虛擬機的IP地址和正確密碼的sa帳號。很簡單——它就是一個SQL Server實例(和Windows同樣)——運行在別的地方——這裏是運行在Linux上!鏈接成功後,如今咱們來運行著名的url

SELECT @@VERSION:

沒錯,咱們運行在Linux上!還有更精彩的!你能夠在Linux上運行常規的基於Windows版SQL Server的備份和還原,也是沒有問題。首先你要拷貝一個SQL Server數據庫備份到你的Ubuntu虛擬機。默認狀況下Ubuntu沒有安裝SMB,你能夠用它來配置用於文件交換的文件共享。首先咱們在Ubuntu上經過安裝SMB功能來修正:

sudo apt-get install samba
smbpasswd -a klaus

安裝好SMB,你能夠經過添加下列目錄到/etc/samba/smb.conf文件來配置遠程文件共享:

[Documents]
path = /home/klaus/Documents
available = yes
valid users = klaus
read only = no
browsable = yes
public = yes
writable = yes

在這裏我共享/home/klaus/Documents做爲共享文件夾。而後你須要重啓SMB服務來讓遠程文件共享可用,從你的Windows系統。

sudo service smbd restart

最後複製你的SQL Server數據庫備份到你的Ubuntu虛擬機。當你在你的Ubuntu虛擬機上有了你的數據庫備份,最後你能夠複製它到/var/opt/mssql/data文件夾,這樣的話,SQL Server就能夠訪問它:

sudo cp AdventureWorks2014.bak /var/opt/mssql/data/AdventureWorks2014.bak

如今當你在SSMS界面裏定位到數據庫還原,你能夠看到SQL Server能夠看到你的備份。

而後經過提供備份文件進行常規的RESORE DATABASE命令:

-- Restore AdventureWorks2014 on Linux
RESTORE DATABASE [AdventureWorks2014] FROM DISK = N'C:\var\opt\mssql\data\AdventureWorks2014.bak' WITH FILE = 1,
MOVE N'AdventureWorks2014_Data' TO N'C:\var\opt\mssql\data\AdventureWorks2014_Data.mdf',  
MOVE N'AdventureWorks2014_Log' TO N'C:\var\opt\mssql\data\AdventureWorks2014_Log.ldf', STATS = 1
GO

說實話,真的是厲害了,個人哥!!!

你還期待Linux上的SQL Server會有什麼呢?我剛說過——幾乎一塊兒!我已經測試了前沿技術——例如內存優化表,列存儲索引,並行執行計劃,等待統計等等。——通通支持!!!

這些功能都支持是正常的,由於常規基於Windows的SQL Server——只是在寄宿在Linux進程裏運行,剝掉Windows系統的SQL Server。

爲何在Linux上運行SQL Server

從技術角度來講,微軟這裏這裏有了很大的突破。沒有人會想到在Steve Ballmer(微軟首席執行官)領導下發生這些。微軟已經作出了180°的轉彎——很是棒!但在Linux上運行SQL Server的商業緣由是什麼?咱們來看下:

  • 沒有系統受權費用(Linux是免費的)
  • 對於Linux,微軟提供了一個「成熟」的關係數據庫技術(固然還有像MySQL的其餘可用數據庫,可是……)
  • ……

坦白講:在Linux上運行SQL Server,這整個想法都有點瘋狂,但你進一步想下,愈加以爲這有意義——對於一些場景。咱們都贊成,對於你們,在Linux上的SQL Server不會是主要的開發模式。但對一些特殊場景會有意義。

小結

近幾個的星期技術真是日新月異啊:首先咱們在SQL Server的標準版裏有了開發版的全部功能,如今咱們有了能夠在Linux上直接運行的基於Windows的SQL Server。加入SQL Server社區很享受,咱們感覺到近些年的革新。咱們的明天會更精彩!

對於微軟SQL Server將來發展方向你有啥想法?歡迎留言!

感謝關注!

原文連接

http://www.sqlpassion.at/archive/2016/11/28/first-steps-with-sql-server-on-linux/

相關文章
相關標籤/搜索