Miroslav Holec
Premium

Jak na Microsoft SQL Server a jeho správu na MacOS

Miroslav Holec   21. dubna 2018  update 9. září 2021

Tento článek je již zastaralý. Článek nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

Rozhodli jste se vyvíjet ASP.NET Core nebo .NET Core aplikace na MacOS a řešíte jak rozchodit SQL Server? V tomto článku popíšu kroky jak si SQL Server snadno zprovoznit a ukážu několik tipů pro jeho následnou správu.

Seznamte se s SQL Server on Linux

Novinkou, která rezonovala v roce 2017 bylo vydání SQL Serveru pro Linux (veřejné preview již od konce roku 2016). Mezi podporované platformy patří například RedHat Enterprise 7.3+, SUSE Enterprise v12 SP2+ nebo Ubuntu 16+. Nás ale zajímá podpora pro Docker Engine verze 1.8+. Právě díky Dockeru si můžeme užít SQL Server i na Macu. Spotřebuje kolem 2 GB operační paměti a na disku si vyžádá kolem 6 GB.

Instalace Dockeru

Jak jsem zmínil, pro běh SQL Serveru on Linux budeme potřebovat Docker. Ten nám umožní vytvořit si vlastní kontejner, ve kterém poběží SQL Server a který budeme mít pod úplnou správou. Výhodou je odstínění kontejneru od zbytku infrastruktury (v našem případě Maca) a tudíž možnosti snadno kontejner odstranit a třeba nahradit jiným. Instalace Dockeru je jednoduchá - stačí stáhnout samotnou aplikaci a přesunout ji do složky s Aplikacemi tak, jak jste zvyklí.

Vytvoření kontejneru

Pokud už běží docker, můžeme jej spravovat pomocí terminálu. Prvním krokem bude stažení obrazu kontejneru:

docker pull mcr.microsoft.com/mssql/server:2019-latest

V případě macOS s čipem M1 se použije obraz:

pull mcr.microsoft.com/azure-sql-edge

Tím stáhneme verzi SQL Server 2019. Verzí obrazů existuje více a jsou dostupné na stránce hub.docker.com.

Pokud je obraz stažený, stačí kontejner nastartovat (př.: MacOS/M1):

docker run --name SqlServer -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=XXXXX' -p 1433:1433 -d mcr.microsoft.com/azure-sql-edge

Tímto způsobem si spustíme kontejner ze staženého obrazu,přijmeme licenční podmínky, nastavíme heslo pro uživatele sa, provedeme mapování internal portu 1433 na veřejný 1433 a nastavíme název kontejneru na SqlServer.

Podobným způsobem bychom mohli spustit více nezávislých instancí SQL Serveru.

Prohlédnout si běžící kontejnery lze příkazem

docker ps

Docker ps

Změna hesla

Pokud chceme do docker kontejneru poslat příkaz na změnu hesla pro sa uživatele, použijeme k tomu příkaz exec.

docker exec -it SqlServer /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<old-password>' \
-Q 'ALTER LOGIN SA WITH PASSWORD="<new-password>"'

Správa pomocí terminálu

Dále bychom mohli chtít odesílat SQL příkazy přímo z terminálu. Pro tento účel budeme potřebovat od kontejneru přístup na bash a opět použijeme příkaz exec.

docker exec -it SqlServer "bash"

Správa SQL Serveru na macos přes bash

Likvidace kontejneru

Pro likvidaci kontejneru je potřeba nejprve zastavit běžící kontejner a poté jej odstranit.

docker stop SqlServer
docker rm SqlServer

Obraz disku je možné dále ponechat pro budoucí použití nebo jej lze odstranit pomocí

docker rmi Image Image

Správa SQL Serveru pomocí nástroje s GUI

Většina vývojářů nechce samozřejmě spravovat své databáze pomocí příkazové řádky. Co se týče vizuálních nástrojů, existují dvě základní cesty: nativní aplikace pro MacOS nebo aplikace napsané v Javě. Ty nativní obvykle nabízí pěkné prostředí ale menší funkční výbavu. Většinou je možné procházet obsah, psát SQL dotazy nebo inteligentně filtrovat data a provádět změny, avšak chybí nástroje pro vizuální modelování, zobrazení exekučních plánů nebo export dat a skriptů.

Do této kategorie můžeme zařadit například mnou vyzkoušené:

  • SQLPro for MSSQL - zdarma, splňuje základní potřeby pro dotazování se na data a editaci a je rychlý
  • SQL Operations Studio - zdarma, mocnější než SQLPro, umí ukazovat například execution plány, je však velmi pomalý a náročný na paměťové prostředky
  • Table Plus - základní verze je zdarma, nabízí pěkné prostředí, je rychlý, oproti výše zmíněným umí i export dat a kromě SQL Serveru jej lze použít i na správu Redis

Všechny výše uvedené nástroje jsou zdarma nebo nabízejí omezenou a dostačující funkcionalitu zdarma. Jestliže si nevystačíte se základní funkční výbavou, ale potřebujete mít nad databázemi větší kontrolu, nezbyde vám než investovat do placených nástrojů.

JetBrains Rider

Jelikož nástroje, které jsou zdarma příliš nevyhovují mé potřebě, používám pro správu databází nástroj, který je integrován přímo ve vývojářském prostředí JetBrains Rider. Jednak tedy nepotřebuji dodatečný nástroj a jednak mi Rider poskytuje další zajímavé funkce, jako

  • diagramy
  • skriptování (CREATE, DROP)
  • export dat do všech možných formátů
  • hraní s barvičkama (logické oddělení různých tabulek)
  • podpora Azure SQL

Pochopit jak Rider funguje, prosekat se ke správě databází a připojit se tak, aby bylo možné SQL databáze spravovat je nicméně silně neintuitivní a je potřeba si na to alespoň hodinku času vyhradit. Abych Vám čas ušetřil, zmíním několik užitečných rad:

  1. Nástroj pro práci s databázemi naleznete pod Views > Tool Windows > Database
  2. Jako druh připojované databáze v případě localhostu je lepší zvolit SQL Server (jTds). Volba SQL Server (Microsoft) je kupodivu cesta do pekel. V případě Azure databáze samozřejmě Azure (Microsoft).
  3. Tlačítko Test nefunguje proto, že úplně dole v dialogovém okně je nutné odkliknout "Download missing drivers"
  4. Již při nastavení je lepší vybrat databázi, na kterou se chci připojit
  5. Od této chvíle nehrabat na nic v nastavení databáze, jinak se to celé rozeseká

Celkově musím říct, že práce s Riderem je po pár hodinách pohodlná a nejsem nucen odbíhat do jiných aplikací. V neposlední řadě to šetří i systémové prostředky.