Поделиться через


Быстрый старт: Создание новой локальной копии базы данных в контейнере с помощью sqlcmd

В этом кратком руководстве вы будете использовать одну команду в sqlcmd для создания нового контейнера и восстановления базы данных в этом контейнере для создания новой локальной копии базы данных для разработки или тестирования.

Предварительные условия

  • Установленная среда выполнения контейнера, например Docker или Podman
  • Скачивание и установка Azure Data Studio
  • Установка последней версии sqlcmd

Замечания

Установка sqlcmd (Go) с помощью диспетчера пакетов заменяет sqlcmd (ODBC) на sqlcmd (Go) в пути к среде. Чтобы это изменение ввело в силу, необходимо закрыть и повторно открыть все текущие сеансы командной строки. sqlcmd (ODBC) не удаляется и по-прежнему может использоваться путем указания полного пути к исполняемому файлу.

Вы также можете обновить PATH переменную, чтобы указать, какая версия имеет приоритет. Для этого в Windows 11 откройте параметры системы и перейдите к > дополнительным параметрам системы. Когда свойства системы откроются, нажмите кнопку "Переменные среды". В нижней половине в разделе системные переменные выберите "Путь " и нажмите кнопку "Изменить". Если расположение sqlcmd (Go) сохраняется по умолчанию (C:\Program Files\sqlcmd) и отображается раньше C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn, то используется sqlcmd (Go).

Вы можете изменить порядок, чтобы снова сделать sqlcmd (ODBC) используемым по умолчанию.

Скачивание и установка sqlcmd (Go)

Дополнительные сведения см. в разделе "Скачать и установить служебную программу sqlcmd".

Какая проблема будет решена?

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

Создание контейнера и восстановление базы данных

Создайте новый экземпляр SQL Server в контейнере с помощью последней версии SQL Server. Команда также восстанавливает WideWorldImporters базу данных.

Откройте новое окно терминала и выполните следующую команду:

sqlcmd create mssql --name sql1 --accept-eula --using https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak

Запрос базы данных в Azure Data Studio

Откройте Azure Data Studio и просмотрите данные.

  1. В том же окне терминала выполните следующую команду:

    sqlcmd open ads
    
  2. Теперь, когда у вас есть локальная копия базы данных, можно выполнять запросы. Ниже приведен запрос, который можно использовать для анализа расходов по клиенту:

    SELECT bg.BuyingGroupName AS CustomerName,
           COUNT(DISTINCT i.InvoiceID) AS InvoiceCount,
           COUNT(il.InvoiceLineID) AS InvoiceLineCount,
           SUM(il.LineProfit) AS Profit,
           SUM(il.ExtendedPrice) AS ExtendedPrice
    FROM Sales.Invoices AS i
         INNER JOIN Sales.Customers AS c
             ON i.CustomerID = c.CustomerID
         INNER JOIN Sales.InvoiceLines AS il
             ON i.InvoiceID = il.InvoiceID
         INNER JOIN Sales.BuyingGroups AS bg
             ON c.BuyingGroupID = bg.BuyingGroupID
    GROUP BY bg.BuyingGroupName
    UNION
    SELECT c.CustomerName,
           COUNT(DISTINCT i.InvoiceID) AS InvoiceCount,
           COUNT(il.InvoiceLineID) AS InvoiceLineCount,
           SUM(il.LineProfit) AS Profit,
           SUM(il.ExtendedPrice) AS ExtendedPrice
    FROM Sales.Invoices AS i
         INNER JOIN Sales.Customers AS c
             ON i.CustomerID = c.CustomerID
         INNER JOIN Sales.InvoiceLines AS il
             ON i.InvoiceID = il.InvoiceID
         LEFT OUTER JOIN Sales.BuyingGroups AS bg
             ON c.BuyingGroupID = bg.BuyingGroupID
    WHERE bg.BuyingGroupID IS NULL
    GROUP BY c.CustomerName
    ORDER BY Profit DESC;
    

Как мы решили проблему?

Вы смогли быстро создать локальную копию базы данных для целей разработки и тестирования. С помощью одной команды вы создали новый локальный экземпляр и восстановили последнюю резервную копию. Затем вы выполнили другую команду, чтобы подключиться к ней через Azure Data Studio. Затем вы запросили базу данных с помощью Azure Data Studio для анализа расходов по клиенту.

Очистка ресурсов

После завершения работы с базой данных удалите контейнер с помощью следующей команды:

sqlcmd delete --force

Флаг --force используется здесь для удобства, так как мы в демонстрационной среде. В большинстве случаев лучше отключить --force флаг, чтобы убедиться, что вы не случайно удаляете базу данных, которую не намеревались удалить.