data.mdx.frontmatter.hero_image

SqlServer na Mac OS X

2017-10-17 | Docker | bd90

W obecnych czasach trudno sobie wyobrazić większą aplikację bez jakiejś bazy danych działającej pod spodem. Zaczynając nowy projekt możemy wprost przebierać systemach jak Oracle, MySql, SqlServer, MariaDB, Postgres DB, SQLite, a do tego jeszcze dochodzą przecież wszystkie bazy NoSql, które z każdym rokiem zyskują na popularności. Kiedy sam migrowałem w stronę .NET-a, zastanawiałem się na jakiej bazie danych przyjdzie mi pracować najczęściej. Podejrzewałem, że SqlServer-a nie uda mi się uruchomić na moim Macbook-u. Mogłem machnąć ręka, stwierdzić, że nie da się to się nie da. No i w sumie tak uznałem. Dzięki, miłego dnia, cześć :). Tym oto sucharem podkreślam, że nie ma rzeczy niemożliwych, czasem trzeba się po prostu namęczyć. Ale co to dla nas! Kakałko w dłoń, klawiatura w ruch: Razem z uruchomieniem wersji SqlServer 2017 microsoft postarał się o wsparcie dla Linux-a i Docker-a. I tutaj właśnie docker przychodzi z pomocą aby uruchomić bazę SqlServer na OS X :)

Wymagania

Aby przejść dalej przez ten tutorial, Twoja maszyna powinna posiadać:

  • Docker Engine 1.8+
  • Minimum 3.25 GB pamięci RAM przeznaczonej dla maszyny wirtualnej docker-a. Aby to ustawić trzeba przejść przez ustawienia -> zaawansowane:

Teraz kiedy mamy już skonfigurowanego docker-a. Możemy przejść do uruchomienia SqlServer-a za pomocą obrazu znajdującego się w Docker Hub-ie.

Uruchamiamy Bazę Danych

Aby uruchomić obraz docker-a potrzebujemy ustawić kilka zmiennych środowiskowych:

  • ACCEPT_EULA -> Potwierdzenie zgodności z licencją, która jest dostępna pod tym linkiem.
  • SA_PASSWORD -> Hasło systemowego administratora, czyli user id = sa. Hasło powinno zawierać minimum 8 znaków, które wpasowują się w nie mniej niż 3 kategorie:
    • Duże litery
    • Małe Litery
    • Znaki Specjalne
    • Numery

Należy pamiętać, aby udostępnić port 1433 na świat jeśli chcemy się komunikować z tym serwerem :). Po spełnieniu wszystkich wymagań polecenie do uruchomienia serwera powinno wyglądać tak:

$ docker container run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d microsoft/mssql-server-linux:2017-GA

Oczywiście hasło trzeba zmienić według własnego uznania.

Wielkim minusem takiego rozwiązania jest niestety fakt, że nie możemy pod mountować kontenera docker-a do naszych dysków. Taka opcja jest dostępna na Linux-ie i w momencie ponownego uruchomienia komputera nie tracimy żadnych danych. Na Mac OS X, w momencie wyłączenia komputera wszystkie dane wędrują do krainy gdzie kakałka już nie ma :(

Teraz możemy zbudować connection string-a, który będzie składał się z adresu serwera (localhost), nazwy użytkownika (sa), i hasła, które podaliśmy w zmiennej środowiskowej.

server=localhost; user id=sa; password=yourStrong(!)Password;

Komunikacja z bazą danych

Tak więc mamy uruchomioną bazę danych. Jak się z nią komunikować? Oczywiście, jak to na Mac-u, mamy kilka rozwiązań płatnych, takich jak:

Istnieje też bardzo fajna, darmowa alternatywa. Plugin "mssql" do Visual Studio Code. Nie ma może wszystkich "wodotryskowych" funkcji jak wyżej wymienione programy, jednak spełnia swoje zadanie znakomicie. Jednoczenie dodaje sporą liczbę snippet-ów, które pozwalają na szybkie generowanie zapytań.

Stworzenie profilu połączenia

Pierwsze, co musimy zrobić, to stworzyć nowy profil połączenia. Otwieramy terminal poleceń (cmd + shiftp + p), wybieramy polecenie MS SQL: Connect. Nazywamy nasz profil i przechodzimy do inputa, w których możemy albo podać connection string-a, którego wygenerowaliśmy wcześniej, albo sam adres Sql Server-a. Jeżeli podaliście sam adres, w następnych dwóch wyskakujących okienkach zostaniecie poproszeni o nazwę użytkownika i hasło, potrzebne do połączenia. Cały proces jest przedstawiony na poniższym gif-ie.

Stworzenie bazy danych

Jak już wcześniej wspominałem sam plugin mssql dodaje też kilka bardzo przydatnych snippet-ów. Jeden z nich tworzy nową bazę danych. Dzięki temu feature-owi jesteśmy w stanie ogarnąć to w około 10 sekund! Dla niewtajemniczonych, to ta sama prędkość, z jaką tracą uwagę ludzie niezainteresowani tematem, gdy zaczyna się opowiadać o programowaniu... Wystarczy na obojętnie jakim dokumencie w formacie SQL zacząć pisać "sqlCreateDatabase", wybrać snippet z listy rozwijanej i wcisną kombinację klawiszy cmd+shift+e aby uruchomić zapytanie na obecnie połączonej bazie danych. Po prawej stronie pojawi się okienko z informacjami oraz z zwrotką z zapytania (jeżeli np. uruchomimy jakąś kwerendę, to właśnie w tym okienku otrzymamy ładnie rozrysowaną tabelę z wynikami :)

Podsumowanie

Tak, prosty sposób, da się uruchomić bazę SqlServer na maszynie z systemem operacyjnym OS X. Jest to przyjemne rozwiązanie dla lokalnego "developmentu", szczególnie jeżeli chcecie programować w takiej technologii jak .NET Core.

Jak zwykle mam nadzieje że artykuł się podobał i okazał przydatny.

Do Następnego!

Cześć :)

PS. Jeżeli chcielibyście, abym napisał coś o tym, jak pracować z bazą SqlServer w programie Data Grip od JetBrains zamiast Visual Studio Code to dajcie znać w komentarzach lub w wiadomości.

By Bd90 | 17-10-2017 | Docker