V polovině listopadu Microsoft vydal první CTP verzi MS SQL Serveru, jenž je určen pro Linux. SQL Server vNext, jak je nazýván Microsoftem, je postaven na verzi SQL Server 2016. Podle vyjádření MS se nyní budou vydávat nová CTP v měsíčních intervalech. Kdo bude mít zájem, může tak sledovat, jak práce na vývoji postupují. Balíčky s CTP1 jsou oficiálně připraveny pro instalaci na Ubuntu 16.04 LTS a Red Hat Enterprise Linux (RHEL) 7.2. Nicméně časem by se měly objevit i balíčky pro SUSE.
Instalace
Instalaci jsem zkoušel na virtuálních serverech Ubuntu 16.04 LTS a CentOS 7.2. Na obou strojích proběhla v pořádku a nesetkal jsem se s žádným zádrhelem. Postup instalace je pěkně popsán krok za krokem na MS stránkách. Pro prvně jmenovaný systém se jedná o stránku Install SQL Server on Ubuntu a pro druhý jsem použil postup uvedený na stránce Install SQL Server on Red Hat Enterprise Linux. Oba postupy popisují jak nainstalovat pouze SQL Sever Engine. Postup instalace sqlcmd a bcp jsem již popsal ve svém dřívějším článku MS ODBC Driver pro Linux. Případně můžete použít postup uvedený v dokumentaci na stránce Install SQL Server tools on Linux
Pro připojení k vNext lze použít stejné SQL Management Studio 16.5, které používáte i pro SQL Server 2016. Nicméně MS doporučuje používat novou verzi 17, jež je k dispozici jako RC1, která je přímo určená i pro vNext. Obě verze si lze stáhnout z https://msdn.microsoft.com/library/mt238290.aspx
Konfigurace
Jakmile je dokončena instalace SQL Serveru, je potřeba se podívat na konfiguraci. Konfigurace se neprovádí, jak jsme zvyklí, z SQL Management Studia. Lépe řečeno záleží na tom, kterou konfigurační hodnotu chcete změnit. Příkladem může být omezení použití RAM paměti, které snadno provedete v Management Studiu. Změna výchozí složky pro zálohy si vyžádá použití zcela nového postupu, který vyústí v nutnost restartovat celou instanci. V SQL Serveru pro Windows provedete změnu výchozí zálohovací složky přes Management Studio ihned bez nutnosti restartu.
Po instalaci se v systému objeví konfigurační skript mssql-conf pomocí něhož si změníte TCP Port, výchozí složky pro data, log, backup a dump, traceflags a collation. Příklady použití mssql-conf naleznete na stránce Configure SQL Server on Linux with mssql-conf
Dostupné funkce
Jelikož se jedná o vydání CTP1, nemůžeme ihned očekávat plnou funkcionalitu a podporu všech funkcí. Nehledejte zde proto Mirroring, AlwaysOn, Windows Authentication, SQL Agenta a další. Plný výčet zatím (ne)podporovaných funkcí naleznete na stránce Release notes for SQL Server on Linux
Po spuštění Management Studia a připojení se k SQL Serveru mě nejprve zajímala edice a verze, kterou MS poskytuje pro vyzkoušení.
Jak je z obrázku patrné jedná o Developer Edition ve verzi 14.0.1.
Na vlastnosti serveru se v Management Studiu podíváte klasicky přes pravé tlačítko myši, jež vám otevře nové okno. Trošku mě zarazila vlastnost Root Directory. Server běží na Ubuntu, proto jsem byl překvapen, že je hodnota nastavena na C:\
Druhým krokem byla kontrola, kde se nacházejí databáze a jak jsou nastaveny výchozí složky pro soubory databází a pro zálohy. Cesty se zobrazují jako kombinace Windows a Linux, přesněji C:\var\opt\mssql\data. Pokud na linuxovém serveru budete hledat cestu začínající na C: určitě neuspějete. Uvidíme tedy dále, zda bude např. fungovat ruční obnova databáze z Management Studia.
Před vlastní obnovou zálohy databáze si zkusme nastavit jinou výchozí složku. Jak jsem uvedl již na začátku, je potřeba použít mssql-conf a počítat s restartem instance.
V Management Studiu nyní překontrolujeme, že se nastavení výchozí složky pro zálohu opravdu změnilo.
Složka pro zálohy zobrazuje nyní linuxovou složku. Pojďme tedy zjistit, zda se nám podaří provést obnovu databáze ze zálohy. Stáhl jsem si novou demonstrační databázi, kterou naleznete na GitHubu jako Wide World Importers
Z obrázku je patrné, že změna výchozí cesty pro zálohy opravdu zafungovala.
Uvidíme, zda se podaří obnovit zálohu do výše uvedených složek.
Obnova databáze ze zálohy se podařila. Management Studio tedy zřejmě pracuje se skutečnou cestou platnou pro linux.
Necháme-li si vygenerovat T-SQL skript pro obnovu databáze z Management Studia, vygeneruje se s chybně zadanou cestou pro uložení databázových souborů.
USE [master] RESTORE DATABASE [WideWorldImporters] FROM DISK = N'/home/sqladmin/sqlbackup/\WideWorldImporters-Full.bak' WITH FILE = 1, MOVE N'WWI_Primary' TO N'C:\var\opt\mssql\data\WideWorldImporters.mdf', MOVE N'WWI_UserData' TO N'C:\var\opt\mssql\data\WideWorldImporters_UserData.ndf', MOVE N'WWI_Log' TO N'C:\var\opt\mssql\data\WideWorldImporters.ldf', MOVE N'WWI_InMemory_Data_1' TO N'C:\var\opt\mssql\data\WideWorldImporters_InMemory_Data_1', NOUNLOAD, STATS = 5 GO
Nejprve si tedy smažeme obnovenou databázi a spustíme vygenerovaný skript. Po spuštění T-SQL skriptu z Management Studia zjistíme, že se podařilo obnovit databázi i přes chybně zadané složky. Skript dokonce proběhne i když jej spustíme přímo z linuxového serveru a provedeme obnovu přes sqlcmd. Nicméně do budoucna bych to nepovažoval za korektní postup uvádění cest a držel bych se zápisu cest podle všech pravidel a zvyklostí Linuxu.
Zatím se mi zdá pokrok při portaci SQL Serveru na Linux velice slibný. Uvidíme, která vylepšení přinese nové vydání CTP.