Ćwiczenie — Nawiązywanie połączenia z bazą danych i dodawanie przykładowych danych

Ukończone

Zanim połączysz bazę danych z aplikacją, dobrze jest sprawdzić, czy możesz nawiązać połączenie, dodawać podstawowe tabele i pracować z danymi przykładowymi.

My zajmujemy się utrzymaniem infrastruktury, aktualizacjami oprogramowania oraz poprawkami bazy danych Azure SQL Database. Bazę danych Azure SQL Database można traktować tak, jakby jakakolwiek inna instalacja programu SQL Server. Możesz na przykład używać programów Visual Studio, SQL Server Management Studio, Azure Data Studio lub innych narzędzi do zarządzania bazą danych Azure SQL Database.

To od Ciebie zależy, w jaki sposób uzyskujesz dostęp do bazy danych i łączysz ją z aplikacją. Aby uzyskać pewne doświadczenie w pracy z bazą danych, połączmy się z nią bezpośrednio z poziomu portalu, utwórzmy tabelę i uruchomimy kilka podstawowych operacji CRUD. Tutaj nauczysz się:

  • Co to jest usługa Cloud Shell i jak uzyskać do niej dostęp w portalu.
  • Jak uzyskać dostęp do informacji dotyczących bazy danych, w tym parametrów połączenia, z poziomu interfejsu wiersza polecenia platformy Azure.
  • Jak nawiązywać połączenie z bazą danych przy użyciu narzędzia sqlcmd.
  • Jak zainicjować bazę danych przy użyciu podstawowej tabeli i kilku danych przykładowych.

Co to jest usługa Azure Cloud Shell?

Usługa Azure Cloud Shell to oparte na przeglądarce środowisko powłoki do tworzenia zasobów platformy Azure i zarządzania nimi. Usługę Cloud Shell można porównać do interaktywnej konsoli działającej w chmurze.

W tle usługa Cloud Shell działa w systemie Linux. Jednak w zależności od tego, czy wolisz środowisko systemu Linux, czy Windows, masz dwa środowiska do wyboru: Bash i PowerShell.

Usługa Cloud Shell jest dostępna z dowolnego miejsca. Dostęp do usługi Cloud Shell możesz uzyskać nie tylko z portalu, ale również z poziomu witryny shell.azure.com, aplikacji mobilnej platformy Azure lub narzędzia Visual Studio Code.

Usługa Cloud Shell zawiera popularne narzędzia i edytory tekstu. Poniżej przedstawiono krótkie spojrzenie na aznarzędzia , jqi sqlcmd , które są trzy narzędzia używane w tym ćwiczeniu.

  • Narzędzie az jest również nazywane interfejsem wiersza polecenia platformy Azure. To interfejs wiersza polecenia służący do pracy z zasobami platformy Azure. Ten interfejs służy do uzyskiwania informacji o bazie danych, w tym parametry połączenia.
  • Narzędzie jq to analizator kodu JSON działający w wierszu polecenia. Dane wyjściowe potoku są przesyłane z az poleceń do tego narzędzia w celu wyodrębnienia ważnych pól z danych wyjściowych JSON.
  • Narzędzie sqlcmd umożliwia wykonywanie instrukcji w programie SQL Server. Służy sqlcmd do tworzenia interaktywnej sesji z bazą danych Azure SQL Database.

Uzyskiwanie informacji na temat bazy danych Azure SQL Database

Przed nawiązaniem połączenia z bazą danych warto sprawdzić, czy baza danych istnieje i czy jest dostępna online.

Teraz należy użyć narzędzia az, aby wyświetlić listę baz danych i informacje dotyczące bazy danych Logistics, w tym jej maksymalny rozmiar i stan.

  1. Uruchamiane az polecenia wymagają nazwy grupy zasobów i nazwy serwera logicznego Usługi Azure SQL. Aby zapisać naciśnięcia klawiszy, uruchom to azure configure polecenie, aby określić je jako wartości domyślne.

    Zastąp [server-name] ciąg nazwą utworzonego serwera logicznego Usługi Azure SQL i [resource-group] grupą zasobów użytą dla serwera.

    az configure --defaults group=[resource-group] sql-server=[server-name]
    

    Uwaga

    W zależności od okienka w portalu nazwa serwera SQL może być wyświetlana jako nazwa FQDN (na przykład servername.database.windows.net). Jednak do tego polecenia potrzebna jest tylko nazwa logiczna, bez sufiksu .database.windows.net.

  2. Uruchom następujące az sql db list polecenie, aby wyświetlić listę wszystkich baz danych na serwerze logicznym usługi Azure SQL:

    az sql db list
    

    Otrzymasz duży blok JSON jako dane wyjściowe.

  3. Ponieważ chcemy uzyskać tylko nazwy baz danych, uruchom polecenie po raz drugi. Tym razem należy jednak przekazać dane wyjściowe w celu jq wyświetlenia tylko pól nazw.

    az sql db list | jq '[.[] | {name: .name}]'
    

    Powinny zostać wyświetlone następujące dane wyjściowe:

    [
      {
        "name": "Logistics"
      },
      {
        "name": "master"
      }
    ]
    

    Logistics to baza danych. Podobnie jak program SQL Server, systemowa master baza danych zawiera metadane serwera, takie jak identyfikatory logowania i ustawienia konfiguracji systemu.

  4. Uruchom następujące az sql db show polecenie, aby uzyskać szczegółowe informacje o Logistics bazie danych:

    az sql db show --name Logistics
    

    Tak jak poprzednio dane wyjściowe zostaną wyświetlone w formie dużego bloku w formacie JSON.

  5. Uruchom polecenie po raz drugi. Tym razem przesyłaj dane wyjściowe w celu jq ograniczenia danych wyjściowych tylko do nazwy, maksymalnego rozmiaru i stanu bazy danych Logistics .

    az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
    

    Zobaczysz, że baza danych jest w trybie online i maksymalna ilość danych, którą może przechowywać baza danych.

    {
      "name": "Logistics",
      "maxSizeBytes": 2147483648,
      "status": "Online"
    }
    

Nawiązywanie połączenia z bazą danych

Gdy już masz podstawowe informacje dotyczące bazy danych, możesz nawiązać z nią połączenie za pomocą narzędzia sqlcmd, utworzyć tabelę do przechowywania informacji o kierowcach i wykonać kilka podstawowych operacji CRUD.

Należy pamiętać, że rozwinięcie skrótu CRUD to tworzenie (Create), odczyt (Read), aktualizowanie (Update) i usuwanie (Delete). Te terminy odnoszą się do operacji wykonywanych na danych tabeli i są czterema podstawowymi operacjami potrzebnymi dla aplikacji. To dobry moment na sprawdzenie, czy potrafisz wykonać każdą z nich.

  1. Uruchom następujące az sql db show-connection-string polecenie, aby uzyskać parametry połączenia do Logistics bazy danych w formacie, którego sqlcmd można użyć:

    az sql db show-connection-string --client sqlcmd --name Logistics
    

    Dane wyjściowe są podobne do poniższego przykładu. Skopiuj te dane wyjściowe do użycia w następnym kroku.

    "sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
    
  2. Uruchom instrukcję sqlcmd z danych wyjściowych poprzedniego kroku, aby utworzyć sesję interaktywną. Usuń cudzysłów i zastąp wartości <username> i <password> nazwą użytkownika i hasłem określonymi podczas tworzenia bazy danych. Oto przykład:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Napiwek

    Umieść hasło w apostrofach, tak aby „&” i inne znaki specjalne nie zostały zinterpretowane jako instrukcje przetwarzania.

    Ważne

    Może zostać wyświetlony komunikat o błędzie podobny do następującego przykładu:

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server:
    Cannot open server 'contoso' requested by the login.
    Client with IP address 'nnn.nnn.nnn.nnn' is not allowed to access the server.
    To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule
    on the master database to create a firewall rule for this IP address or address range.
    It may take up to five minutes for this change to take effect.
    

    Jeśli wystąpi ten błąd, musisz dodać kolejną regułę zapory dla klienta. W tym celu wykonaj następujące kroki:

    • Zaloguj się do Azure Portal.

    • Na stronie głównej platformy Azure w obszarze Usługi platformy Azure wybierz pozycję Wszystkie zasoby. Zostanie wyświetlone okienko Wszystkie zasoby .

    • Wyszukaj i wybierz swoją bazę danych. Zostanie wyświetlone okienko Logistyka bazy danych SQL.

    • Na górnym pasku menu wybierz pozycję Ustaw zaporę serwera. Zostanie wyświetlone okienko Sieć .

    • W sekcji Reguły zapory wybierz pozycję Dodaj regułę zapory. Zostanie wyświetlone okienko Dodawanie reguły zapory.

    • Określ unikatową nazwę reguły, a następnie wprowadź adres IP z komunikatu o błędzie w polach Początkowy adres IP i Końcowy adres IP. Wybierz przycisk OK.

    • Wybierz pozycję Zapisz.

    • Uruchom ponownie instrukcję , sqlcmd aby uruchomić sesję interaktywną sqlcmd . Powinien on wyglądać podobnie do poniższego przykładu:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Po uruchomieniu sqlcmd sesji pozostałe polecenia używają języka Transact-SQL lub języka T-SQL.

    Napiwek

    Podczas uruchamiania poleceń języka T-SQL w tym module polecenie GO w drugim wierszu może nie zostać skopiowane do sqlcmd wiersza polecenia. Po wprowadzeniu pierwszego wiersza polecenia może być konieczne wpisanie w poleceniu GO . Pamiętaj o uruchomieniu polecenia GO, ponieważ bez niego polecenie języka T-SQL nie zostanie wykonane.

  3. W sesji sqlcmd uruchom następujące instrukcje języka T-SQL, aby utworzyć tabelę o nazwie Drivers:

    CREATE TABLE Drivers (DriverID int, LastName varchar(255), FirstName varchar(255), OriginCity varchar(255));
    GO
    

    Tabela zawiera cztery kolumny: unikatowy identyfikator, imię i nazwisko kierowcy oraz miasto pochodzenia kierowcy.

  4. Uruchom następujące instrukcje języka T-SQL, aby sprawdzić, czy Drivers tabela istnieje:

    SELECT name FROM sys.tables;
    GO
    

    Powinny zostać wyświetlone następujące dane wyjściowe:

    name
    --------------------------------------------------------------------------------------------------------------------------------
    Drivers
    
    (1 rows affected)
    
  5. Aby przetestować operację tworzenia , uruchom następujące instrukcje języka T-SQL, aby dodać przykładowy wiersz do tabeli:

    INSERT INTO Drivers (DriverID, LastName, FirstName, OriginCity) VALUES (123, 'Zirne', 'Laura', 'Springfield');
    GO
    

    Te dane wyjściowe wskazują, że operacja zakończyła się pomyślnie:

    (1 rows affected)
    
  6. Aby przetestować operację odczytu , uruchom następujące instrukcje języka T-SQL, aby wyświetlić listę DriverID kolumn i OriginCity ze wszystkich wierszy w tabeli:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Otrzymasz jeden wynik z elementem DriverID i OriginCity dla wiersza utworzonego w poprzednim kroku.

    DriverID    OriginCity
    ----------- --------------------------
            123 Springfield
    
    (1 rows affected)
    
  7. Aby przetestować operację aktualizacji , uruchom następujące instrukcje języka T-SQL, aby zmienić miasto pochodzenia z "Springfield" na "Boston" dla sterownika z wartością DriverID 123:

    UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123;
    GO
    
  8. Uruchom następujące instrukcje języka T-SQL, aby ponownie wyświetlić kolumny DriverID i OriginCity :

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Teraz powinny zostać wyświetlone następujące dane wyjściowe. Zwróć uwagę, w jaki sposób OriginCity odzwierciedla aktualizację wartości Boston.

    DriverID    OriginCity
    ----------- --------------------------
            123 Boston
    
    (1 rows affected)
    
  9. Na koniec przetestuj operację usuwania , uruchamiając następujące instrukcje języka T-SQL, aby usunąć rekord:

    DELETE FROM Drivers WHERE DriverID=123;
    GO
    
    (1 rows affected)
    
  10. Uruchom następujące instrukcje języka T-SQL, aby sprawdzić, czy tabela jest pusta Drivers :

    SELECT COUNT(*) FROM Drivers;
    GO
    

    Zobaczysz, że tabela nie zawiera wierszy.

    -----------
              0
    
    (1 rows affected)
    

Teraz, gdy masz ogólny pomysł na pracę z usługą Azure SQL Database z poziomu usługi Cloud Shell, możesz uzyskać parametry połączenia dla ulubionego narzędzia do zarządzania SQL, niezależnie od tego, czy jest to program SQL Server Management Studio, Visual Studio, czy coś innego.

Usługa Cloud Shell ułatwia uzyskiwanie dostępu do zasobów platformy Azure i pracę z nimi. Ponieważ usługa Cloud Shell jest oparta na przeglądarce, można uzyskać do niej dostęp z systemu Windows, macOS lub Linux; zasadniczo każdy system z przeglądarką internetową.

Masz teraz praktyczne doświadczenie związane z uruchamianiem poleceń interfejsu wiersza polecenia platformy Azure w celu uzyskiwania informacji na temat bazy danych Azure SQL Database. Dodatkowo przećwiczono umiejętności obsługi języka T-SQL.

W następnej lekcji podsuniemy ten moduł i opiszemy sposób usuwania bazy danych.