Compartir a través de


Inicio rápido: Creación de una nueva copia local de una base de datos en un contenedor con sqlcmd

En este inicio rápido, usará un único comando en sqlcmd para crear un contenedor y restaurar una base de datos en ese contenedor para crear una nueva copia local de una base de datos, para desarrollo o pruebas.

Requisitos previos

Comentarios

La instalación de sqlcmd (Go) a través de un administrador de paquetes reemplaza sqlcmd (ODBC) por sqlcmd (Go) en la ruta de acceso del entorno. Todas las sesiones de línea de comandos actuales deben cerrarse y volver a abrirse para que este cambio surta efecto. sqlcmd (ODBC) no se quita y se puede usar todavía especificando la ruta de acceso completa al archivo ejecutable.

También puede actualizar la variable PATH para indicar qué versión tiene prioridad. Para ello, en Windows 11, abra Configuración del sistema y vaya a Acerca de> Configuración avanzada del sistema. Cuando se abra Propiedades del sistema, seleccione el botón Variables de entorno. En la mitad inferior, en Variables del sistema, seleccione Ruta de acceso y, a continuación, seleccione Editar. Si la ubicación sqlcmd (Go) se guarda (C:\Program Files\sqlcmd es el valor predeterminado), aparece antes de C:\Program Files\Microsoft SQL Server\<version>\Tools\Binn y, a continuación, se usa sqlcmd (Go).

Puede revertir el orden para volver a convertir sqlcmd (ODBC) en el valor predeterminado.

Descarga e instalación de sqlcmd (Go)

Para obtener más información, vea Descargar e instalar la utilidad sqlcmd.

¿Qué problema resolveremos?

En esta guía rápida se explica el proceso de crear una copia local de una base de datos y luego consultarla para analizar el gasto por cliente.

Creación de una nuevo contenedor y restauración de una base de datos

Cree una nueva instancia de SQL Server en un contenedor con la versión más reciente de SQL Server. El comando también restaura la base de datos WideWorldImporters.

Abra una nueva ventana de terminal y ejecute el siguiente comando:

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

Consulta de la base de datos en Visual Studio Code

Ahora que tiene una copia local de la base de datos, puede ejecutar consultas.

Conéctese a la base de datos con la extensión MSSQL para Visual Studio Code y ejecute la siguiente consulta para analizar el gasto por parte del 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;

¿Cómo solucionamos el problema?

Ha podido crear rápidamente una copia local de una base de datos con fines de desarrollo y pruebas. Con un solo comando, creó una nueva instancia local y restauró la copia de seguridad más reciente. A continuación, ejecutó otro comando para conectarse a él a través de Visual Studio Code. Después, ha consultado la base de datos mediante la extensión MSSQL para Visual Studio Code para analizar el gasto por parte del cliente.

Limpieza de recursos

Cuando haya terminado de probar la base de datos, elimine el contenedor con el siguiente comando:

sqlcmd delete --force

La marca --force se usa aquí para mayor comodidad, ya que estamos en un entorno de demostración. En la mayoría de los casos, es mejor dejar la marca --force desactivada para asegurarse de que no está eliminando accidentalmente una base de datos.