Restauración de una base de datos de SQL Server en un contenedor de Docker para Linux
Se aplica a:
SQL Server (todas las versiones admitidas): Linux
En este tutorial se muestra cómo mover y restaurar un archivo de copia de seguridad de SQL Server en una imagen de contenedor de Linux de SQL Server 2017 que se ejecuta en Docker.
En este tutorial se muestra cómo mover y restaurar un archivo de copia de seguridad de SQL Server en una imagen de contenedor de Linux de SQL Server 2019 que se ejecuta en Docker.
- Extraiga y ejecute la imagen de contenedor de Linux de SQL Server más reciente.
- Copie el archivo de base de datos de Wide World Importers en el contenedor.
- Restaure la base de datos en el contenedor.
- Ejecute instrucciones de Transact-SQL para ver y modificar la base de datos.
- Realice una copia de seguridad de la base de datos modificada.
Prerequisites
- Motor de Docker 1.8 o versiones posteriores en cualquier distribución de Linux admitida o Docker para Mac y Windows. Para obtener más información, consulte Instalar Docker.
- Un mínimo de 2 GB de espacio en disco.
- Un mínimo de 2 GB de RAM.
- Requisitos del sistema para SQL Server en Linux.
Extraer y ejecutar la imagen de contenedor
Abra un terminal de Bash en Linux/Mac o una sesión de PowerShell con privilegios elevados en Windows.
Extraiga la imagen de contenedor de SQL Server 2017 para Linux de Docker Hub.
sudo docker pull mcr.microsoft.com/mssql/server:2017-latestdocker pull mcr.microsoft.com/mssql/server:2017-latestSugerencia
En este tutorial se proporcionan ejemplos de comandos de Docker para el shell de Bash (Linux/Mac) y PowerShell (Windows).
Para ejecutar la imagen de contenedor con Docker, puede usar el siguiente comando:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \ --name 'sql1' -p 1401:1433 \ -v sql1data:/var/opt/mssql \ -d mcr.microsoft.com/mssql/server:2017-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ` --name "sql1" -p 1401:1433 ` -v sql1data:/var/opt/mssql ` -d mcr.microsoft.com/mssql/server:2017-latestImportante
La asignación de volúmenes de host para Docker en Windows no admite actualmente la asignación del directorio completo de
/var/opt/mssql. Pero puede asignar un subdirectorio, como/var/opt/mssql/data, a su equipo host.En este momento no se admite la asignación de volumen de host para Docker en Mac con la imagen de SQL Server en Linux. En su lugar, use contenedores de volúmenes de datos. Esta restricción es específica del directorio
/var/opt/mssql. La lectura desde un directorio montado funciona correctamente. Por ejemplo, puede montar un directorio host mediante -v en Mac y restaurar una copia de seguridad desde un archivo .bak que resida en el host.Este comando crea un contenedor de SQL Server 2017 con la edición Developer (valor predeterminado). El puerto 1433 de SQL Server se expone en el host como puerto 1401. El parámetro
-v sql1data:/var/opt/mssqlopcional crea un contenedor de volúmenes de datos denominado sql1ddata. Se usa para almacenar los datos creados por SQL Server.Importante
En este ejemplo se usa un contenedor de volúmenes de datos dentro de Docker. Si en su lugar decide asignar un directorio host, tenga en cuenta que existen limitaciones para este enfoque en Docker para Mac y Windows. Para obtener más información, consulte Configuración de imágenes de contenedor de SQL Server en Docker.
Para ver los contenedores de Docker, use el comando
docker ps.sudo docker ps -adocker ps -aSi la columna ESTADO muestra el estado Activo, esto indica que SQL Server se está ejecutando en el contenedor y que está escuchando en el puerto especificado en la columna PUERTOS. Si la columna ESTADO de su contenedor de SQL Server muestra Cerrado, consulte la sección Solución de problemas de la guía de configuración.
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
941e1bdf8e1d mcr.microsoft.com/mssql/server/mssql-server-linux "/bin/sh -c /opt/m..." About an hour ago Up About an hour 0.0.0.0:1401->1433/tcp sql1
Abra un terminal de Bash en Linux/Mac o una sesión de PowerShell con privilegios elevados en Windows.
Extraiga la imagen de contenedor de SQL Server 2019 para Linux de Docker Hub.
sudo docker pull mcr.microsoft.com/mssql/server:2019-latestdocker pull mcr.microsoft.com/mssql/server:2019-latestSugerencia
En este tutorial se proporcionan ejemplos de comandos de Docker para el shell de Bash (Linux/Mac) y PowerShell (Windows).
Para ejecutar la imagen de contenedor con Docker, puede usar el siguiente comando:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \ --name 'sql1' -p 1401:1433 \ -v sql1data:/var/opt/mssql \ -d mcr.microsoft.com/mssql/server:2019-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ` --name "sql1" -p 1401:1433 ` -v sql1data:/var/opt/mssql ` -d mcr.microsoft.com/mssql/server:2019-latestImportante
La asignación de volúmenes de host para Docker en Windows no admite actualmente la asignación del directorio completo de
/var/opt/mssql. Pero puede asignar un subdirectorio, como/var/opt/mssql/data, a su equipo host.En este momento no se admite la asignación de volumen de host para Docker en Mac con la imagen de SQL Server en Linux. En su lugar, use contenedores de volúmenes de datos. Esta restricción es específica del directorio
/var/opt/mssql. La lectura desde un directorio montado funciona correctamente. Por ejemplo, puede montar un directorio host mediante -v en Mac y restaurar una copia de seguridad desde un archivo .bak que resida en el host.Este comando crea un contenedor de SQL Server 2019 con la edición Developer (valor predeterminado). El puerto 1433 de SQL Server se expone en el host como puerto 1401. El parámetro
-v sql1data:/var/opt/mssqlopcional crea un contenedor de volúmenes de datos denominado sql1ddata. Se usa para almacenar los datos creados por SQL Server.Para ver los contenedores de Docker, use el comando
docker ps.sudo docker ps -adocker ps -aSi la columna ESTADO muestra el estado Activo, esto indica que SQL Server se está ejecutando en el contenedor y que está escuchando en el puerto especificado en la columna PUERTOS. Si la columna ESTADO de su contenedor de SQL Server muestra Cerrado, consulte la sección Solución de problemas de la guía de configuración.
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 941e1bdf8e1d mcr.microsoft.com/mssql/server/mssql-server-linux "/bin/sh -c /opt/m..." About an hour ago Up About an hour 0.0.0.0:1401->1433/tcp sql1
Cambiar la contraseña de SA
La cuenta SA es un administrador del sistema en la instancia de SQL Server que se crea durante la instalación. Después de crear el contenedor de SQL Server, la variable de entorno MSSQL_SA_PASSWORD especificada se reconoce mediante la ejecución de echo $MSSQL_SA_PASSWORD en el contenedor. Por motivos de seguridad, cambie la contraseña de administrador del sistema:
Elija una contraseña segura que se usará para el usuario SA.
Use
docker execpara ejecutar la utilidad sqlcmd a fin de cambiar la contraseña a través de una instrucción Transact-SQL. Reemplace<YourStrong!Passw0rd>y<YourNewStrong!Passw0rd>con valores de contraseña propios:sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourStrong!Passw0rd>' \ -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong!Passw0rd>"'docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong!Passw0rd>" ` -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong!Passw0rd>'"
Copia de un archivo de copia de seguridad en el contenedor
En este tutorial se usa la base de datos de ejemplo Wide World Importers. Siga estos pasos para descargar y copiar el archivo de copia de seguridad de base de datos de Wide World Importers en el contenedor de SQL Server.
En primer lugar, use docker exec para crear una carpeta de copia de seguridad. El siguiente comando crea un directorio /var/opt/mssql/backup dentro del contenedor de SQL Server.
sudo docker exec -it sql1 mkdir /var/opt/mssql/backupdocker exec -it sql1 mkdir /var/opt/mssql/backupLuego, descargue el archivo WideWorldImporters-Full.bak en el equipo host. Los siguientes comandos llevan al directorio home/user y descargan el archivo de copia de seguridad como wwi.bak.
cd ~ curl -L -o wwi.bak 'https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak'curl -OutFile "wwi.bak" "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak"Use docker cp para copiar el archivo de copia de seguridad en el contenedor, en el directorio /var/opt/mssql/backup.
sudo docker cp wwi.bak sql1:/var/opt/mssql/backupdocker cp wwi.bak sql1:/var/opt/mssql/backup
Restauración de la base de datos
El archivo de copia de seguridad ahora se encuentra dentro del contenedor. Antes de restaurar la copia de seguridad, es importante conocer los nombres de archivo lógicos y los tipos de archivo que hay dentro de la copia de seguridad. Los siguientes comandos de Transact-SQL examinan la copia de seguridad y realizan la restauración con sqlcmd en el contenedor.
Sugerencia
En este tutorial se usa sqlcmd dentro del contenedor, ya que este incluye esta herramienta preinstalada. Pero también puede ejecutar instrucciones de Transact-SQL con otras herramientas de cliente fuera del contenedor, como Visual Studio Code o SQL Server Management Studio. Para conectarse, use el puerto de host que se ha asignado al puerto 1433 en el contenedor. En este ejemplo es localhost,1401 en el equipo host y Host_IP_Address,1401 de forma remota.
Ejecute sqlcmd dentro del contenedor para enumerar los nombres de archivo lógicos y las rutas de acceso que hay dentro de la copia de seguridad. Esto se hace con la instrucción de Transact-SQL RESTORE FILELISTONLY.
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost \ -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/wwi.bak"' \ | tr -s ' ' | cut -d ' ' -f 1-2docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost ` -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/wwi.bak'"Debería ver un resultado similar al siguiente:
LogicalName PhysicalName ------------------------------------------ WWI_Primary D:\Data\WideWorldImporters.mdf WWI_UserData D:\Data\WideWorldImporters_UserData.ndf WWI_Log E:\Log\WideWorldImporters.ldf WWI_InMemory_Data_1 D:\Data\WideWorldImporters_InMemory_Data_1Llame al comando RESTORE DATABASE para restaurar la base de datos dentro del contenedor. Especifique nuevas rutas de acceso para cada uno de los archivos del paso anterior.
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'RESTORE DATABASE WideWorldImporters FROM DISK = "/var/opt/mssql/backup/wwi.bak" WITH MOVE "WWI_Primary" TO "/var/opt/mssql/data/WideWorldImporters.mdf", MOVE "WWI_UserData" TO "/var/opt/mssql/data/WideWorldImporters_userdata.ndf", MOVE "WWI_Log" TO "/var/opt/mssql/data/WideWorldImporters.ldf", MOVE "WWI_InMemory_Data_1" TO "/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1"'docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "RESTORE DATABASE WideWorldImporters FROM DISK = '/var/opt/mssql/backup/wwi.bak' WITH MOVE 'WWI_Primary' TO '/var/opt/mssql/data/WideWorldImporters.mdf', MOVE 'WWI_UserData' TO '/var/opt/mssql/data/WideWorldImporters_userdata.ndf', MOVE 'WWI_Log' TO '/var/opt/mssql/data/WideWorldImporters.ldf', MOVE 'WWI_InMemory_Data_1' TO '/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1'"Debería ver un resultado similar al siguiente:
Processed 1464 pages for database 'WideWorldImporters', file 'WWI_Primary' on file 1. Processed 53096 pages for database 'WideWorldImporters', file 'WWI_UserData' on file 1. Processed 33 pages for database 'WideWorldImporters', file 'WWI_Log' on file 1. Processed 3862 pages for database 'WideWorldImporters', file 'WWI_InMemory_Data_1' on file 1. Converting database 'WideWorldImporters' from version 852 to the current version 869. Database 'WideWorldImporters' running the upgrade step from version 852 to version 853. Database 'WideWorldImporters' running the upgrade step from version 853 to version 854. Database 'WideWorldImporters' running the upgrade step from version 854 to version 855. Database 'WideWorldImporters' running the upgrade step from version 855 to version 856. Database 'WideWorldImporters' running the upgrade step from version 856 to version 857. Database 'WideWorldImporters' running the upgrade step from version 857 to version 858. Database 'WideWorldImporters' running the upgrade step from version 858 to version 859. Database 'WideWorldImporters' running the upgrade step from version 859 to version 860. Database 'WideWorldImporters' running the upgrade step from version 860 to version 861. Database 'WideWorldImporters' running the upgrade step from version 861 to version 862. Database 'WideWorldImporters' running the upgrade step from version 862 to version 863. Database 'WideWorldImporters' running the upgrade step from version 863 to version 864. Database 'WideWorldImporters' running the upgrade step from version 864 to version 865. Database 'WideWorldImporters' running the upgrade step from version 865 to version 866. Database 'WideWorldImporters' running the upgrade step from version 866 to version 867. Database 'WideWorldImporters' running the upgrade step from version 867 to version 868. Database 'WideWorldImporters' running the upgrade step from version 868 to version 869. RESTORE DATABASE successfully processed 58455 pages in 18.069 seconds (25.273 MB/sec).
Comprobar la base de datos restaurada
Ejecute la consulta siguiente para mostrar una lista de nombres de bases de datos del contenedor:
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourNewStrong!Passw0rd>' \
-Q 'SELECT Name FROM sys.Databases'
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourNewStrong!Passw0rd>" `
-Q "SELECT Name FROM sys.Databases"
Debería ver WideWorldImporters en la lista de bases de datos.
Realización de cambios
Con los pasos siguientes se realiza un cambio en la base de datos.
Ejecute una consulta para ver los diez elementos principales de la tabla Warehouse.StockItems.
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'SELECT TOP 10 StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems ORDER BY StockItemID'docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "SELECT TOP 10 StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems ORDER BY StockItemID"Debería ver una lista de identificadores y nombres de elemento:
StockItemID StockItemName ----------- ----------------- 1 USB missile launcher (Green) 2 USB rocket launcher (Gray) 3 Office cube periscope (Black) 4 USB food flash drive - sushi roll 5 USB food flash drive - hamburger 6 USB food flash drive - hot dog 7 USB food flash drive - pizza slice 8 USB food flash drive - dim sum 10 drive variety pack 9 USB food flash drive - banana 10 USB food flash drive - chocolate barActualice la descripción del primer elemento con la siguiente instrucción UPDATE:
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName="USB missile launcher (Dark Green)" WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName='USB missile launcher (Dark Green)' WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1"Debería ver un resultado similar al texto siguiente:
(1 rows affected) StockItemID StockItemName ----------- ------------------------------------ 1 USB missile launcher (Dark Green)
Crear una nueva copia de seguridad
Después de haber restaurado la base de datos en un contenedor, puede que también quiera crear periódicamente copias de seguridad de base de datos dentro del contenedor en ejecución. Los pasos siguen un patrón similar a los pasos anteriores, pero en orden inverso.
Use el comando de Transact-SQL BACKUP DATABASE para crear una copia de seguridad de base de datos en el contenedor. En este tutorial se crea un nuevo archivo de copia de seguridad wwi_2.bak en el directorio /var/opt/mssql/backup creado previamente.
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"Debería ver un resultado similar al siguiente:
10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. Processed 1200 pages for database 'WideWorldImporters', file 'WWI_Primary' on file 1. Processed 53096 pages for database 'WideWorldImporters', file 'WWI_UserData' on file 1. 80 percent processed. Processed 3865 pages for database 'WideWorldImporters', file 'WWI_InMemory_Data_1' on file 1. Processed 938 pages for database 'WideWorldImporters', file 'WWI_Log' on file 1. 100 percent processed. BACKUP DATABASE successfully processed 59099 pages in 25.056 seconds (18.427 MB/sec).Luego, copie el archivo de copia de seguridad del contenedor en el equipo host.
cd ~ sudo docker cp sql1:/var/opt/mssql/backup/wwi_2.bak wwi_2.bak ls -l wwi*cd ~ docker cp sql1:/var/opt/mssql/backup/wwi_2.bak wwi_2.bak ls wwi*
Uso de los datos almacenados
Además de realizar copias de seguridad de las bases de datos para proteger los datos, puede usar contenedores de volúmenes de datos. Al principio de este tutorial se ha creado el contenedor sql1 con el parámetro -v sql1data:/var/opt/mssql. El contenedor de volúmenes de datos sql1data almacena los datos de /var/opt/mssql incluso después de quitar el contenedor. En los pasos siguientes se quita por completo el contenedor sql1 y, luego, se crea un nuevo contenedor, sql2, con los datos almacenados.
Detenga el contenedor sql1.
sudo docker stop sql1docker stop sql1Quite el contenedor. Esto no elimina el contenedor de volúmenes de datos sql1data creado previamente ni los datos almacenados en él.
sudo docker rm sql1docker rm sql1Cree un nuevo contenedor, sql2, y vuelva a usar el contenedor de volúmenes de datos sql1data.
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \ --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \ -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ` --name "sql2" -e "MSSQL_PID=Developer" -p 1401:1433 ` -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latestLa base de datos Wide World Importers está ahora en el nuevo contenedor. Ejecute una consulta para comprobar el cambio anterior que ha realizado.
sudo docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1"Nota
La contraseña de administrador del sistema no es la que ha especificado para el contenedor sql2,
MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>. Todos los datos de SQL Server se han restaurado desde sql1, incluida la contraseña modificada anteriormente en el tutorial. En efecto, algunas opciones como esta se omiten debido a la restauración de los datos de /var/opt/mssql. Por esta razón, la contraseña es<YourNewStrong!Passw0rd>, como se muestra aquí.
Detenga el contenedor sql1.
sudo docker stop sql1docker stop sql1Quite el contenedor. Esto no elimina el contenedor de volúmenes de datos sql1data creado previamente ni los datos almacenados en él.
sudo docker rm sql1docker rm sql1Cree un nuevo contenedor, sql2, y vuelva a usar el contenedor de volúmenes de datos sql1data.
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \ --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \ -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ` --name "sql2" -e "MSSQL_PID=Developer" -p 1401:1433 ` -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latestLa base de datos Wide World Importers está ahora en el nuevo contenedor. Ejecute una consulta para comprobar el cambio anterior que ha realizado.
sudo docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '<YourNewStrong!Passw0rd>' \ -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourNewStrong!Passw0rd>" ` -Q "SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1"Nota
La contraseña de administrador del sistema no es la que ha especificado para el contenedor sql2,
MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>. Todos los datos de SQL Server se han restaurado desde sql1, incluida la contraseña modificada anteriormente en el tutorial. En efecto, algunas opciones como esta se omiten debido a la restauración de los datos de /var/opt/mssql. Por esta razón, la contraseña es<YourNewStrong!Passw0rd>, como se muestra aquí.
Pasos siguientes
En este tutorial ha aprendido a realizar una copia de seguridad de una base de datos en Windows y a moverla a un servidor de Linux con SQL Server 2017. Ha aprendido a:
En este tutorial ha aprendido a realizar una copia de seguridad de una base de datos en Windows y a moverla a un servidor de Linux con SQL Server 2019. Ha aprendido a:
- Crear imágenes de contenedor de Linux de SQL Server.
- Copiar copias de seguridad de base de datos de SQL Server en un contenedor.
- Ejecutar instrucciones de Transact-SQL dentro del contenedor con sqlcmd.
- Crear y extraer archivos de copia de seguridad desde un contenedor.
- Usar contenedores de volúmenes de datos en Docker para almacenar datos de SQL Server.
Después, revise otros escenarios de configuración y solución de problemas de Docker: