Bazy danych wykorzystywane są wszędzie tam, gdzie zachodzi potrzeba przechowywania i przetwarzania danych. Na rynku mamy dostępnych wiele narzędzi do tworzenia i operowania na baza danych z Microsoft SQL Server, między innymi:
- SQL Operations Studio
- SQL Server Management Studio
- LINQPad
- mssql-cli
- mssql do VS Code
Nie wszystkie powyższe narzędzia są cross platform. W artykule skupię się na pracy z SQL Server z poziomu dystrybucji Linux (Ubuntu). Głównym bohaterem mojego wpisu będzie wtyczka mssql do wieloplatformowego edytora kodu Visual Studio Code. Do codziennej pracy nie zawsze potrzebuję instalować kombajn jak produkt z nazwą Studio od Microsoftu. Wtyczka mssql spełnia moje podstawowe wymagania, dzięki niej uzyskujemy następujące funkcje:
- zarządzanie i tworzenie profili połączeń do Microsoft SQL Server, Azure SQL Database lub SQL Data Warehouses
- pisanie zapytań T-SQL z wykorzystaniem IntelliSense
- T-SQL snippet
- kolorowanie i weryfikacja składni
- uruchamianie skryptów i przegląd wyników w postaci tabeli
- zapis wyników do formatu json, xlsx lub csv
Co nam będzie potrzebne do zabawy z powyższą wtyczką, oczywiście instancja SQL Server, z którym będziemy chcieli połączyć się, oraz Visual Studio Code. Czasy zmieniają się i od pewnego dnia można instalować SQL Server 2017 na dystrybucji Linux. Dla osób, które nie mają dostępu do żadnego serwera, oraz nie chcą lokalnie instalować SQL Server, zaprezentuję w kolejnym rozdziale jak uruchomić kontener SQL Server 2017 z poziomu Dockera.
Uruchomienie kontenera SQL Server 2017 w 3 krokach (Docker)
- Instalujemy Dockera (instrukcja instalacji).
- Pobieramy najnowszy obraz SQL Server 2017 Linux z repozytorium Docker Hub
sudo docker pull microsoft/mssql-server-linux:2017-latest
3. Uruchamiamy kontener SQL Server
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=TopSecret!1' -p 1433:1433 --name sql -d microsoft/mssql-server-linux:2017-latest
W ramach uruchamiania instancji obrazu przekazywane są następujące parametry:
- -e 'ACCEPT_EULA=Y’ – ustawienie zmiennej ACCEPT_EULA na wartość Y powoduje akceptacje umowy licencyjnej wymaganej dla obrazu SQL Server
- -e 'SA_PASSWORD=TopSecret!1′ – ustawienie hasła dla użytkownika sa zgodnego z polityka SQL Server (hasło posiada minimum 8 znaków, hasło musi zawierać duże litery, małe litery, cyfry i symbole)
- -p 1433:1433 – mapowanie portów host:container
- –name sql – ustawienie nazwy kontenera
- -d microsoft/mssql-server-linux:2017-latest – wskazanie obrazu dockera
Czy kontener został uruchomiony prawidłowo możemy sprawdzić poniższą komendą.
docker ps -a
Extension mssql (VS Code)
Czas na instalacje pluginu mssql do Visual Studio Code. W VS Code przechodzimy do zakładki Extensions, wyszukujemy mssql, klikamy Install, a po zakończeniu instalacji klikamy Reload.
Środowisko pracy gotowe, czas przejść do praktyki. Zaczniemy od stworzenia profilu połączenia do SQL Server z poziomu Visual Studio Code. W VS Code wciskamy CTRL+SHIFT+P w celu otwarcia Command Palette. Wpisując sql możemy podejrzeć dostępne mssql komendy.
Wybieramy MS SQL:Connect, w ramach konfiguracji profilu połączenia, w następnych krokach podajemy nazwę serwera, login, hasło, nazwę profilu i zapisujemy. Jeśli udało się połączyć z serwerem na dolnej belce otrzymamy stosowną informacje.
Na dzień pisania wpisu w telewizji teraz tylko Mundial, Mundial i Mundial. Wykorzystam ten fakt i stworzę bazę danych Mundial, w której będę przechowywał dane najlepszych piłkarzy. Do pisania skryptu wykorzystamy kilka dostępnych snippet-ów np. sqlCreateDatabase, sqlCreateTable i sqlInsertRows.
-- Create a new database called 'Mundial' -- Connect to the 'master' database to run this snippet USE master GO -- Create the new database if it does not exist already IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'Mundial') CREATE DATABASE Mundial GO USE Mundial GO -- Create a new table called 'Players' in schema 'dbo' -- Drop the table if it already exists IF OBJECT_ID('dbo.Players', 'U') IS NOT NULL DROP TABLE dbo.Players GO -- Create the table in the specified schema CREATE TABLE dbo.Players ( PlayersId INT NOT NULL IDENTITY(1,1) PRIMARY KEY, -- primary key column FirstName [NVARCHAR](50) NOT NULL, LastName [NVARCHAR](50) NOT NULL, Nationality [NVARCHAR](50) NOT NULL, Height tinyint NOT NULL, Age tinyint NOT NULL, Position [NVARCHAR](50) NOT NULL, CurrentClub [NVARCHAR](50) NOT NULL, MarketValue real NOT NULL ); GO -- Insert rows into table 'dbo.Players' INSERT INTO dbo.Players ( -- columns to insert data into [FirstName], [LastName], [Nationality], [Height], [Age], [Position], [CurrentClub], [MarketValue] ) VALUES ( 'Jan', 'Kowalski', 'Poland', 185, 21, 'Left Wing', 'DRY Opole' , 1.2), ( 'Marian', 'Lewandowski', 'Poland', 160, 29, 'Centre-Forward', 'SOLID Warszawa' , 100.0), ( 'Adam', 'Peszkin', 'Poland', 185, 32, 'Left Wing', 'KISS Gdynia' , 2.3), ( 'Olaf', 'Majka', 'Poland', 210, 17, 'Keeper', 'YAGNI Gliwice' ,32.2) GO
Zamieszczony powyżej skrypt T-SQL w VS Code możemy wykonać poprzez wciśnięcie klawiszy CTRL + SHIFT + E. Baza danych z tabelą utworzona, spróbujmy wyciągnąć podstawowe informacje (imię, wiek, klub) o naszych piłkarzach z tabeli.
Wyniki otrzymanego zapytania prezentowane są w postaci tabelarycznej. Istnieje możliwość zapisu wyników do jednego z trzech formatów csv, json i xlsx (excel).
Podsumowanie
W artykule przedstawiłem możliwość zarządzania bazą danych z poziomu Visual Studio Code z wykorzystaniem wtyczki mssql. Przyznajcie, że trudne to nie jest, zachęcam do przejrzenia także innych wtyczek z VS Studio, w wielu przypadkach ułatwiają codzienną prace z edytorem kodu. Do końca Czerwca pojawi się jeszcze jeden wpis z tematyki testowania, zachęcam do śledzenia na Twitterze i odwiedzin bloga.