Condividi tramite


Avvio rapido: Creare una nuova copia locale di un database in un contenitore con sqlcmd

In questa guida di avvio rapido verrà utilizzato un singolo comando in sqlcmd per creare un nuovo contenitore e ripristinare un database in tale contenitore per creare una nuova copia locale di un database, per lo sviluppo o il test.

Prerequisiti

  • Un runtime del contenitore installato, ad esempio Docker o Podman
  • Scaricare e installare Azure Data Studio
  • Installare la versione più recente di sqlcmd

Osservazioni:

L'installazione di sqlcmd (Go) tramite una gestione pacchetti sostituisce sqlcmd (ODBC) con sqlcmd (Go) nel percorso dell'ambiente. Perché questa modifica sia effettiva, tutte le sessioni della riga di comando correnti devono essere chiuse e riaperte. sqlcmd (ODBC) non viene rimosso e può comunque essere usato specificando il percorso completo del file eseguibile.

È anche possibile aggiornare la variabile PATH per indicare quale versione ha la precedenza. A tale scopo in Windows 11, aprire Impostazioni di sistema e passare a Informazioni sulle impostazioni di sistema avanzate di >. Quando si apre Proprietà di sistema, selezionare il pulsante Variabili di ambiente. Nella metà inferiore, in Variabili di sistema selezionare Percorso e quindi Modifica. Se il percorso in cui viene salvato sqlcmd (Go) (C:\Program Files\sqlcmd, per impostazione predefinita) è elencato prima di C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn, allora viene usato sqlcmd (Go).

È possibile invertire l'ordine in modo che sqlcmd (ODBC) sia nuovamente il valore predefinito.

Scaricare e installare sqlcmd (Go)

Per altre informazioni, vedere Scaricare e installare l'utilità sqlcmd.

Che problema sarà risolto?

In questa guida di avvio rapido viene illustrato il processo di creazione di una copia locale di un database, quindi la query per analizzare la spesa per cliente.

Creare un nuovo contenitore e ripristinare un database

Creare una nuova istanza di SQL Server in un contenitore usando la versione più recente di SQL Server. Il comando ripristina anche il database WideWorldImporters.

Aprire una nuova finestra di terminale ed eseguire il comando seguente.

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

Eseguire query sul database usando Azure Data Studio

Aprire Azure Data Studio ed esaminare i dati.

  1. Eseguire il comando seguente nella finestra del terminale.

    sqlcmd open ads
    
  2. Ora che è disponibile una copia locale del database, è possibile eseguire le query. Ecco una query che è possibile usare per analizzare la spesa per cliente:

    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;
    

Come è stato risolto il problema?

È stato possibile creare rapidamente una copia locale di un database a scopo di sviluppo e test. Con un singolo comando è stata creata una nuova istanza locale e ne è stato ripristinato il backup più recente. È stato quindi eseguito un altro comando per connettersi a esso tramite Azure Data Studio. È stata quindi eseguita una query sul database usando Azure Data Studio per analizzare la spesa per cliente.

Pulire le risorse

Al termine del tentativo del database, eliminare il contenitore con il comando seguente:

sqlcmd delete --force

Il flag --force viene usato qui per praticità poiché si è in un ambiente demo. Nella maggior parte dei casi, è preferibile lasciare disattivato il flag --force per assicurarsi di non eliminare inavvertitamente un database che non si intende eliminare.