Упражнение. Подключение к базе данных и добавление демонстрационных данных

Завершено

Прежде чем подключать базу данных к приложению, следует проверить возможность подключиться к ней, добавить простую таблицу и выполнить некоторые операции с демонстрационными данными.

Мы отвечаем за инфраструктуру, обновления и исправления программного обеспечения для базы данных SQL Azure. Вы можете обрабатывать базу данных SQL Azure, как и любую другую установку SQL Server. Например, вы можете использовать Visual Studio, SQL Server Management Studio, Azure Data Studio и другие средства для управления базой данных SQL Azure.

Вы можете свободно выбирать методы доступа к базе данных и подключения приложений к ней. Чтобы получить опыт работы с базой данных, давайте подключитесь к ней непосредственно с портала, создайте таблицу и выполните несколько основных операций CRUD. Здесь вы узнаете:

  • что такое Cloud Shell и как открыть эту оболочку на портале;
  • как с помощью Azure CLI получить информацию о базе данных, в том числе строки подключения;
  • как подключиться к базе данных с помощью sqlcmd;
  • как поместить в базу данных простую таблицу с тестовыми данными.

Что такое Azure Cloud Shell?

Azure Cloud Shell — это браузерная оболочка, предназначенная для разработки и администрирования ресурсов Azure. Cloud Shell можно рассматривать как интерактивную консоль, которая работает в облаке.

Cloud Shell основана на платформе Linux. Но в зависимости от того, предпочитаете ли вы среду Linux или Windows, у вас есть два способа выбора: Bash и PowerShell.

Cloud Shell можно использовать из любого расположения. Cloud Shell можно открыть не только на портале, но и через shell.azure.com, мобильное приложение Azure или Visual Studio Code.

Cloud Shell содержит популярные средства и текстовые редакторы. Ниже приведен краткий обзор azи jqsqlcmd служебных программ, которые являются тремя инструментами, которые вы используете в этом упражнении.

  • az — это интерфейс командной строки Azure. Он поддерживает команды для работы с ресурсами Azure. Этот интерфейс используется для получения сведений о базе данных, включая строка подключения.
  • jq — это средство командной строки для синтаксического анализа JSON. Выходные данные из команд в это средство передаются для az извлечения важных полей из выходных данных JSON.
  • sqlcmd позволяет выполнять инструкции на сервере SQL Server. Вы используете sqlcmd для создания интерактивного сеанса с базой данных SQL Azure.

Получение сведений о базе данных SQL Azure

Прежде чем подключаться к базе данных, следует проверить ее существование и доступность в сети.

Для этого мы используем служебную программу az, которая возвращает список баз данных и некоторые сведения о базе данных Logistics, в том числе максимальный размер и текущее состояние.

  1. Для az выполнения команд требуется имя группы ресурсов и имя логического сервера SQL Azure. Чтобы не набирать их каждый раз с помощью клавиатуры, выполните команду azure configure, которая сохранит их в качестве значений по умолчанию.

    Замените [server-name] именем созданного логического сервера SQL Azure и [resource-group] группой ресурсов, используемой для сервера.

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

    Примечание.

    В некоторых областях портала имя сервера SQL Server может отображаться в виде полного доменного имени (например, servername.database.windows.net). Однако для этой команды требуется только логическое имя без суффикса .database.windows.net.

  2. Выполните следующую az sql db list команду, чтобы получить список всех баз данных на логическом сервере SQL Azure:

    az sql db list
    

    Вы получаете большой блок JSON в виде выходных данных.

  3. Так как мы хотим получить только имена баз данных, выполните команду во второй раз. Но на этот раз передайте выходные данные, чтобы jq отобразить только поля имен.

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

    Вы должны получить следующие выходные данные:

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

    Logistics — это ваша база данных. Как и SQL Server, системная master база данных включает метаданные сервера, такие как имена входа и параметры конфигурации системы.

  4. Выполните следующую az sql db show команду, чтобы получить сведения о Logistics базе данных:

    az sql db show --name Logistics
    

    Как и раньше, вы увидите большой блок текстовых данных в формате JSON.

  5. Еще раз выполните команду . На этот раз выведите выходные данные, чтобы jq ограничить выходные данные только именем, максимальным размером и состоянием базы данных логистики .

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

    Вы увидите, что база данных находится в подключенном режиме. Также отобразится максимальный объем данных, который эта база данных может хранить.

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

Подключение к базе данных

Итак, вы получили некоторые сведения о базе данных. Теперь давайте подключимся к ней с помощью sqlcmd, создадим таблицу для сведений о водителях и выполним несколько простых операций CRUD.

Как вы помните, CRUD расшифровывается как Create (создание), Read (чтение), Update (обновление) и Delete (удаление). Так принято обозначать основные операции с данными в таблицах. Это четыре базовые операции, требуемые для работы вашего приложения. Сейчас мы проверим, как выполняется каждая из них.

  1. Выполните следующую az sql db show-connection-string команду, чтобы получить строка подключения Logistics в базу данных в формате, который sqlcmd может использовать:

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

    Выходные данные похожи на следующий пример. Скопируйте эти выходные данные для использования на следующем шаге.

    "sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
    
  2. Запустите инструкцию sqlcmd из выходных данных предыдущего шага, чтобы создать интерактивный сеанс. Удалите кавычки и замените заполнители <username> и <password> именем пользователя и паролем, которые вы указали при создании базы данных. Приведем пример:

    sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Совет

    Заключите пароль в кавычки, чтобы знак "&" и другие специальные знаки не интерпретировались как инструкции по обработке.

    Важно!

    Может появиться сообщение об ошибке, аналогичное следующему примеру:

    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.
    

    Если эта ошибка возникает, необходимо добавить другое правило брандмауэра для клиента. Для этого выполните следующие действия:

    • Войдите на портал Azure.

    • На главной странице Azure в разделе Службы Azure выберите Все ресурсы. Появится панель Все ресурсы.

    • Найдите и выберите свою базу данных. Появится область Логистика для вашей базы данных SQL.

    • В верхней строке меню выберите Настроить брандмауэр сервера. Откроется панель Сеть.

    • В разделе правил брандмауэра выберите "Добавить правило брандмауэра". Откроется панель "Добавить правило брандмауэра".

    • Введите уникальное значение в поле Имя правила, а затем введите IP-адрес из сообщения об ошибке в поля Начальный IP-адрес и Конечный IP-адрес. Нажмите ОК.

    • Выберите Сохранить.

    • Запустите инструкцию sqlcmd еще раз, чтобы запустить интерактивный sqlcmd сеанс. Он должен выглядеть примерно так:

    sqlcmd -S tcp:contoso-1.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    Теперь, когда вы запустили sqlcmd сеанс, остальные команды используют язык Transact-SQL или T-SQL.

    Совет

    При выполнении команд T-SQL в этом модуле GO вторая строка может не скопироваться в sqlcmd запрос. После ввода первой строки команды может потребоваться ввести команду GO . Команда T-SQL не выполнится без этого, поэтому не забудьте запустить команду GO.

  3. sqlcmd В сеансе выполните следующие инструкции T-SQL, чтобы создать таблицу с именемDrivers:

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

    Эта таблица содержит четыре столбца: уникальный идентификатор, фамилия и имя водителя, а также его родной город.

  4. Выполните следующие инструкции T-SQL, чтобы убедиться, что Drivers таблица существует:

    SELECT name FROM sys.tables;
    GO
    

    Вы должны получить следующие выходные данные:

    name
    --------------------------------------------------------------------------------------------------------------------------------
    Drivers
    
    (1 rows affected)
    
  5. Чтобы проверить операцию создания , выполните следующие инструкции T-SQL, чтобы добавить в таблицу пример строки:

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

    Это означает, что операция выполнена успешно:

    (1 rows affected)
    
  6. Чтобы проверить операцию чтения, выполните следующие инструкции T-SQL для перечисления DriverID и OriginCity столбцов из всех строк в таблице:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Вы получите один результат с строкой DriverID , OriginCity созданной на предыдущем шаге.

    DriverID    OriginCity
    ----------- --------------------------
            123 Springfield
    
    (1 rows affected)
    
  7. Чтобы проверить операцию обновления , выполните следующие инструкции T-SQL, чтобы изменить город происхождения с Springfield на "Бостон" для водителя с DriverID 123:

    UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123;
    GO
    
  8. Выполните следующие инструкции T-SQL для повторного перечисления DriverID и OriginCity столбцов:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    Теперь вы должны получить следующие выходные данные. Обратите внимание на то, как OriginCity отражает изменение значения на Boston.

    DriverID    OriginCity
    ----------- --------------------------
            123 Boston
    
    (1 rows affected)
    
  9. Наконец, проверьте операцию удаления , выполнив следующие инструкции T-SQL, чтобы удалить запись:

    DELETE FROM Drivers WHERE DriverID=123;
    GO
    
    (1 rows affected)
    
  10. Выполните следующие инструкции T-SQL, чтобы убедиться, что таблица пуста Drivers :

    SELECT COUNT(*) FROM Drivers;
    GO
    

    Вы увидите, что таблица не содержит строк.

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

Теперь, когда у вас есть общая идея о работе с База данных SQL Azure из Cloud Shell, вы можете получить строка подключения для любимого средства управления SQL, будь то из SQL Server Management Studio, Visual Studio или другого.

Cloud Shell упрощает доступ к ресурсам Azure и работу с ними. Так как Cloud Shell основан на браузере, вы можете получить доступ к нему из Windows, macOS или Linux; по сути любая система с веб-браузером.

Вы получили практический опыт выполнения команд Azure CLI, позволяющих получить сведения о базе данных SQL Azure. Также вы попрактиковались в использовании T-SQL.

В следующем уроке мы заключим этот модуль и описываем, как сломать базу данных.