다음을 통해 공유


빠른 시작: sqlcmd를 사용하여 컨테이너에 데이터베이스의 새 로컬 복사본 만들기

이 빠른 시작에서는 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 플래그를 해제하는 것이 좋습니다.