Cvičení – připojení k databázi a přidání ukázkových dat
Než k vaší aplikaci připojíte databázi, měli byste ověřit, jestli se k ní můžete připojit, a můžete také přidat základní tabulku a pracovat s ukázkovými daty.
O infrastrukturu, aktualizace softwaru a opravy pro vaši databázi Azure SQL Database se staráme my. S databází Azure SQL můžete zacházet stejně jako s jakoukoli jinou instalací SQL Serveru. Ke správě Azure SQL Database můžete používat třeba Visual Studio, SQL Server Management Studio, Azure Data Studio a další nástroje.
Jak budete k databázi přistupovat a jak ji připojíte k aplikacím, je na vás. Abychom získali zkušenosti s prací s databází, připojme se k ní přímo z portálu, vytvořte tabulku a spusťte několik základních operací CRUD. Tady se dozvíte:
- Co je Cloud Shell a jak se k němu dostat z portálu.
- Jak pomocí Azure CLI získat informace o vaší databázi, včetně připojovacích řetězců.
- Jak se k databázi připojit pomocí
sqlcmd
. - Jak databázi inicializovat základní tabulkou a nějakými ukázkovými daty.
Co je Azure Cloud Shell?
Azure Cloud Shell je prostředí založené na prohlížeči, které je určené ke správě a vývoji prostředků Azure. Cloud Shell si můžete představit jako interaktivní konzolu, která běží v cloudu.
Pro zajímavost – Cloud Shell běží na Linuxu. V závislosti na tom, jestli dáváte přednost prostředí Linuxu nebo Windows, ale máte dvě možnosti, ze kterých si můžete vybrat: Bash a PowerShell.
Cloud Shell je přístupný odkudkoli. Ke Cloud Shellu se dostanete nejen z portálu, ale také z shell.azure.com, mobilní aplikace Azure nebo z Visual Studio Code.
Cloud Shell obsahuje oblíbené nástroje a textové editory. Zde je stručný přehled az
nástrojů , jq
a sqlcmd
nástrojů, které používáte v tomto cvičení.
az
se také označuje jako Azure CLI. Je to rozhraní příkazového řádku pro práci s prostředky Azure. Toto rozhraní slouží k získání informací o databázi, včetně připojovací řetězec.jq
je analyzátor příkazového řádku ve formátu JSON. Výstup zaz
příkazů do tohoto nástroje můžete táhnout tak, aby extrahovali důležitá pole z výstupu JSON.sqlcmd
umožňuje spouštět příkazy na SQL Serveru. Použijetesqlcmd
k vytvoření interaktivní relace s databází Azure SQL.
Získání informací o Azure SQL Database
Než se k databázi připojíte, je vhodné ověřit, jestli existuje a je online.
Tady pomocí nástroje az
vypíšete svoje databáze a zobrazíte některé informace o databázi Logistics (Logistika), včetně její maximální velikosti a stavu.
Příkazy
az
, které spustíte, vyžadují název vaší skupiny prostředků a název logického serveru Azure SQL. Pokud chcete uložit stisknutí kláves, spusťte tentoazure configure
příkaz a zadejte je jako výchozí hodnoty.Nahraďte
[server-name]
názvem logického serveru Azure SQL, který jste vytvořili, a[resource-group]
skupinou prostředků, kterou jste použili pro váš server.az configure --defaults group=[resource-group] sql-server=[server-name]
Poznámka:
V závislosti na podokně, na kterém jste na portálu, se název sql serveru může zobrazit jako plně kvalifikovaný název domény (například servername.database.windows.net). Pro tento příkaz ale potřebujete jenom logický název bez přípony .database.windows.net.
Spuštěním následujícího
az sql db list
příkazu zobrazte seznam všech databází na logickém serveru Azure SQL:az sql db list
Jako výstup získáte velký blok JSON.
Protože chceme získat jenom názvy databází, spusťte příkaz podruhé. Tentokrát ale předáte výstup tak, aby
jq
zobrazoval jenom pole názvů.az sql db list | jq '[.[] | {name: .name}]'
Měl by se zobrazit tento výstup:
[ { "name": "Logistics" }, { "name": "master" } ]
Logistics
je vaše databáze. Stejně jako SQL Servermaster
systémová databáze zahrnuje metadata serveru, jako jsou přihlášení a nastavení konfigurace systému.Spuštěním následujícího
az sql db show
příkazu získejte podrobnosti oLogistics
databázi:az sql db show --name Logistics
Jako předtím uvidíte jako výstup velký blok ve formátu JSON.
Spusťte příkaz znovu. Tentokrát odešlete výstup tak, aby
jq
byl výstup omezen pouze na název, maximální velikost a stav databáze Logistics .az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
Vidíte, že databáze je online a maximální množství dat, která může databáze uložit.
{ "name": "Logistics", "maxSizeBytes": 2147483648, "status": "Online" }
Připojení k databázi
Teď když už o vaší databázi něco víte, připojíme se k ní pomocí nástroje sqlcmd
, vytvoříme tabulku obsahující informace o řidičích dopravy a provedeme pár základních operací CRUD.
CRUD označuje operace Create (vytvoření), Read (čtení), Update (aktualizace) a Delete (odstranění). Tyto termíny odkazují na operace, které provádíte s daty tabulky, a jsou to čtyři základní operace, které potřebujete pro vaši aplikaci. Teď je vhodná doba, abyste si ověřili, že umíte provést každou z nich.
Spuštěním následujícího
az sql db show-connection-string
příkazu získejte připojovací řetězec doLogistics
databáze ve formátu, kterýsqlcmd
může použít:az sql db show-connection-string --client sqlcmd --name Logistics
Výstup vypadá podobně jako v následujícím příkladu. Zkopírujte tento výstup pro použití v dalším kroku.
"sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
Spuštěním příkazu
sqlcmd
z výstupu předchozího kroku vytvořte interaktivní relaci. Odeberte uvozovky a nahraďte<username>
a<password>
uživatelským jménem a heslem, které jste zadali při vytváření databáze. Tady je příklad:sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
Tip
Dejte heslo do jednoduchých uvozovek, aby znak & a jiné speciální znaky, které jsou součástí hesla, nebyly interpretované jako příkazy pro zpracování.
Důležité
Může se zobrazit chybová zpráva podobná následujícímu příkladu:
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.
Pokud k této chybě dojde, musíte pro svého klienta přidat další pravidlo brány firewall. K tomu proveďte následující kroky:
Přihlaste se k webu Azure Portal.
Na domovské stránce Azure v části Služby Azure vyberte Všechny prostředky. Zobrazí se podokno Všechny prostředky .
Vyhledejte a vyberte svou databázi. Zobrazí se podokno Logistika pro vaši databázi SQL.
V horním řádku nabídek vyberte Nastavit bránu firewall serveru. Zobrazí se podokno Sítě .
V části Pravidla brány firewall vyberte Přidat pravidlo brány firewall. Zobrazí se podokno Přidat pravidlo brány firewall.
Zadejte jedinečný Název pravidla a pak zadejte svou IP adresu z chybové zprávy pro pole Počáteční IP adresa i Koncová IP adresa. Vyberte OK.
Zvolte Uložit.
sqlcmd
Spusťte příkaz znovu a spusťte interaktivnísqlcmd
relaci. Měl by vypadat přibližně jako v následujícím příkladu:
sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
Teď, když jste spustili
sqlcmd
relaci, zbývající příkazy používají jazyk Transact-SQL nebo T-SQL.Tip
Při spouštění příkazů T-SQL v tomto modulu
GO
se na druhém řádku nemusí zkopírovat do příkazovéhosqlcmd
řádku. Po zadání prvního řádku příkazu může být nutné zadatGO
příkaz. Proto nezapomeňte spustit příkazGO
, jinak se příkaz T-SQL nespustí.Z relace spusťte
sqlcmd
následující příkazy T-SQL a vytvořte tabulku s názvemDrivers
:CREATE TABLE Drivers (DriverID int, LastName varchar(255), FirstName varchar(255), OriginCity varchar(255)); GO
Tabulka obsahuje čtyři sloupce: jedinečný identifikátor, příjmení a jméno řidiče a město, odkud řidič pochází.
Spuštěním následujících příkazů T-SQL ověřte, že
Drivers
tabulka existuje:SELECT name FROM sys.tables; GO
Měl by se zobrazit tento výstup:
name -------------------------------------------------------------------------------------------------------------------------------- Drivers (1 rows affected)
Pokud chcete otestovat operaci vytvoření , spusťte následující příkazy T-SQL a přidejte do tabulky ukázkový řádek:
INSERT INTO Drivers (DriverID, LastName, FirstName, OriginCity) VALUES (123, 'Zirne', 'Laura', 'Springfield'); GO
Tento výstup označuje, že operace proběhla úspěšně:
(1 rows affected)
Pokud chcete otestovat operaci čtení , spusťte následující příkazy T-SQL, které zobrazí seznam
DriverID
sloupcůOriginCity
ze všech řádků v tabulce:SELECT DriverID, OriginCity FROM Drivers; GO
Zobrazí se jeden výsledek s řádkem
DriverID
OriginCity
, který jste vytvořili v předchozím kroku.DriverID OriginCity ----------- -------------------------- 123 Springfield (1 rows affected)
Pokud chcete otestovat operaci aktualizace , spusťte následující příkazy T-SQL, které změní město původu z "Springfield" na "Boston" pro řidiče s
DriverID
123:UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123; GO
Spusťte následující příkazy T-SQL, které znovu zobrazí seznam
DriverID
sloupců aOriginCity
sloupců:SELECT DriverID, OriginCity FROM Drivers; GO
Teď byste měli získat následující výstup. Všimněte si, jak
OriginCity
odráží aktualizaci na Boston.DriverID OriginCity ----------- -------------------------- 123 Boston (1 rows affected)
Nakonec otestujte operaci odstranění spuštěním následujících příkazů T-SQL pro odstranění záznamu:
DELETE FROM Drivers WHERE DriverID=123; GO
(1 rows affected)
Spuštěním následujících příkazů T-SQL ověřte, že
Drivers
je tabulka prázdná:SELECT COUNT(*) FROM Drivers; GO
Uvidíte, že tabulka neobsahuje žádné řádky.
----------- 0 (1 rows affected)
Teď, když máte obecný nápad na práci se službou Azure SQL Database z Cloud Shellu, můžete získat připojovací řetězec pro váš oblíbený nástroj pro správu SQL, ať už se jedná o SQL Server Management Studio, Visual Studio nebo něco jiného.
Cloud Shell umožňuje snadno přistupovat k prostředkům Azure a pracovat s nimi. Vzhledem k tomu, že cloud Shell je založený na prohlížeči, můžete k němu přistupovat z Windows, macOS nebo Linuxu; v podstatě jakýkoli systém s webovým prohlížečem.
Získali jste některé praktické zkušenosti se získáváním informací o databázi Azure SQL Database pomocí příkazů Azure CLI. Jako bonus jste si procvičili dovednosti s T-SQL.
V další lekci zabalíme tento modul a popíšeme, jak databázi odbourat.