Dela via


Snabbstart: Skapa en ny lokal kopia av en databas i en container med sqlcmd

I den här snabbstarten använder du ett enda kommando i sqlcmd för att skapa en ny container och återställa en databas till containern för att skapa en ny lokal kopia av en databas för utveckling eller testning.

Förutsättningar

Anmärkningar

Om du installerar sqlcmd (Go) via en pakethanterare ersätts sqlcmd (ODBC) med sqlcmd (Go) i din miljösökväg. Alla aktuella kommandoradssessioner måste stängas och öppnas igen för att ändringen ska börja gälla. sqlcmd (ODBC) tas inte bort och kan fortfarande användas genom att ange den fullständiga sökvägen till den körbara filen.

Du kan också uppdatera PATH variabeln för att ange vilken version som har företräde. Om du vill göra det i Windows 11 öppnar du Systeminställningar och går till Om > Avancerade systeminställningar. När Systemegenskaper öppnas väljer du knappen Miljövariabler. I den nedre halvan, under Systemvariabler, välj Sökväg och välj sedan Redigera. Om platsen sqlcmd (Go) sparas till (C:\Program Files\sqlcmd är standard) och förekommer före C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn, används sqlcmd (Go).

Du kan reversera ordningen för att göra sqlcmd (ODBC) till standard igen.

Ladda ned och installera sqlcmd (Go)

Mer information finns i Ladda ned och installera sqlcmd-verktyget.

Vilket problem kommer vi att lösa?

Den här snabbstarten går igenom processen med att skapa en lokal kopia av en databas och sedan skicka frågor till den för att analysera utgifter per kund.

Skapa en ny container och återställa en databas

Skapa en ny SQL Server-instans i en container med den senaste versionen av SQL Server. Kommandot återställer också WideWorldImporters-databasen.

Öppna ett nytt terminalfönster och kör följande kommando:

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

Fråga databasen i Visual Studio Code

Nu när du har en lokal kopia av databasen kan du köra frågor.

Anslut till databasen med MSSQL-tillägget för Visual Studio Code och kör följande fråga för att analysera utgifter per kund:

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;

Hur löste vi problemet?

Du kunde snabbt skapa en lokal kopia av en databas i utvecklings- och testsyfte. Med ett enda kommando skapade du en ny lokal instans och återställde den senaste säkerhetskopian till den. Sedan körde du ett annat kommando för att ansluta till det via Visual Studio Code. Sedan gjorde du en fråga till databasen med MSSQL-tillägget för Visual Studio Code för att analysera förbrukning per kund.

Rensa resurser

När du är klar med att testa databasen tar du bort containern med följande kommando:

sqlcmd delete --force

Flaggan --force används här för enkelhetens skull eftersom vi befinner oss i en demomiljö. I de flesta fall är det bättre att lämna --force flaggan av för att se till att du inte oavsiktligt tar bort en databas som du inte menar.