Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве вы будете использовать одну команду в 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 и просмотрите данные.
В том же окне терминала выполните следующую команду:
sqlcmd open adsТеперь, когда у вас есть локальная копия базы данных, можно выполнять запросы. Ниже приведен запрос, который можно использовать для анализа расходов по клиенту:
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 флаг, чтобы убедиться, что вы не случайно удаляете базу данных, которую не намеревались удалить.