Partilhar via


Restaurar um banco de dados do SQL Server em um contêiner Linux

Aplica-se a:SQL Server em Linux

Este tutorial demonstra como mover e restaurar um arquivo de backup do SQL Server em uma imagem de contêiner Linux do SQL Server 2017 (14.x) em execução no Docker.

Este tutorial demonstra como mover e restaurar um arquivo de backup do SQL Server em uma imagem de contêiner Linux do SQL Server 2019 (15.x) em execução no Docker.

Este tutorial demonstra como mover e restaurar um arquivo de backup do SQL Server em uma imagem de contêiner do SQL Server 2022 (16.x) Linux em execução no Docker.

Este tutorial demonstra como mover e restaurar um ficheiro de backup do SQL Server para uma imagem de contentor Linux SQL Server 2025 (17.x) a correr no Docker.

  • Obtenha e execute a imagem mais recente do container SQL Server para Linux.
  • Copie o arquivo de banco de dados da Wide World Importers para o contêiner.
  • Restaure o banco de dados no contêiner.
  • Execute instruções Transact-SQL para exibir e modificar o banco de dados.
  • Faça backup do banco de dados modificado.

Pré-requisitos

Opções de implantação

Esta seção fornece opções de implantação para seu ambiente.

sqlcmd atualmente não suporta o parâmetro MSSQL_PID ao criar contêineres. Se você usar as instruções sqlcmd neste tutorial, criará um contêiner com a edição Developer do SQL Server. Use as instruções da interface de linha de comando (CLI) para criar um contêiner usando a licença de sua escolha. Para obter mais informações, consulte Implantar e conectar-se a contêineres Linux do SQL Server.

Puxe e execute a imagem do contêiner

  1. Abra um terminal bash no Linux.

  2. Extraia a imagem do contêiner Linux do SQL Server 2017 (14.x) do Registro de contêiner da Microsoft.

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    
  3. Para executar a imagem de contêiner com o Docker, você pode usar o seguinte comando:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2017-latest
    

    Atenção

    Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    Este comando cria um contêiner do SQL Server 2017 (14.x) com a edição Developer (padrão). A porta 1433 do SQL Server é exposta no host como porta 1401. O parâmetro -v sql1data:/var/opt/mssql opcional cria um contêiner de volume de dados chamado sql1data. Isso é usado para persistir os dados criados pelo SQL Server.

    Importante

    Este exemplo usa um contêiner de volume de dados no Docker. Para obter mais informações, consulte Configurar imagens de contêiner do SQL Server no Docker.

  4. Para exibir seus contêineres, use o comando docker ps.

    sudo docker ps -a
    
  5. Se a coluna STATUS mostrar um status de Up, o SQL Server está sendo executado no contêiner e escutando na porta especificada na coluna PORTS. Se a coluna STATUS do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker.

$ 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
  1. Abra um terminal bash no Linux.

  2. Puxe a imagem do contêiner Linux do SQL Server 2019 (15.x) do Registro de Contêiner da Microsoft.

    sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
    
  3. Para executar a imagem de contêiner com o Docker, você pode usar o seguinte comando:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2019-latest
    

    Atenção

    Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    Este comando cria um contêiner do SQL Server 2019 (15.x) com a edição Developer (padrão). A porta 1433 do SQL Server é exposta no host como porta 1401. O parâmetro -v sql1data:/var/opt/mssql opcional cria um contêiner de volume de dados chamado sql1data. Isso é usado para persistir os dados criados pelo SQL Server.

    Importante

    Este exemplo usa um contêiner de volume de dados no Docker. Para obter mais informações, consulte Configurar imagens de contêiner do SQL Server no Docker.

  4. Para exibir seus contêineres, use o comando docker ps.

    sudo docker ps -a
    
  5. Se a coluna STATUS mostrar um status de Up, o SQL Server está sendo executado no contêiner e escutando na porta especificada na coluna PORTS. Se a coluna STATUS do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker.

    $ 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
    
  1. Abra um terminal bash no Linux.

  2. Extraia a imagem do contêiner Linux do SQL Server 2022 (16.x) do Registro de contêiner da Microsoft.

    sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  3. Para executar a imagem de contêiner com o Docker, você pode usar o seguinte comando:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2022-latest
    

    Atenção

    Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    Este comando cria um contêiner do SQL Server 2022 (16.x) com a edição Developer (padrão). A porta 1433 do SQL Server é exposta no host como porta 1401. O parâmetro -v sql1data:/var/opt/mssql opcional cria um contêiner de volume de dados chamado sql1data. Isso é usado para persistir os dados criados pelo SQL Server.

    Importante

    Este exemplo usa um contêiner de volume de dados no Docker. Para obter mais informações, consulte Configurar imagens de contêiner do SQL Server no Docker.

  4. Para exibir seus contêineres, use o comando docker ps.

    sudo docker ps -a
    
  5. Se a coluna STATUS mostrar um status de Up, o SQL Server está sendo executado no contêiner e escutando na porta especificada na coluna PORTS. Se a coluna STATUS do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker.

    $ 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
    
  1. Abra um terminal bash no Linux.

  2. Extrai a imagem do contentor SQL Server 2025 (17.x) Linux do Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2025-latest
    
  3. Para executar a imagem de contêiner com o Docker, você pode usar o seguinte comando:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2025-latest
    

    Atenção

    Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    Este comando cria um contentor SQL Server 2025 (17.x) com a edição de Desenvolvimento (por defeito). A porta 1433 do SQL Server é exposta no host como porta 1401. O parâmetro -v sql1data:/var/opt/mssql opcional cria um contêiner de volume de dados chamado sql1data. Isso é usado para persistir os dados criados pelo SQL Server.

    Importante

    Este exemplo usa um contêiner de volume de dados no Docker. Para obter mais informações, consulte Configurar imagens de contêiner do SQL Server no Docker.

  4. Para exibir seus contêineres, use o comando docker ps.

    sudo docker ps -a
    
  5. Se a coluna STATUS mostrar um status de Up, o SQL Server está sendo executado no contêiner e escutando na porta especificada na coluna PORTS. Se a coluna STATUS do contêiner do SQL Server mostrar Exited, consulte Solucionar problemas de contêineres do SQL Server Docker.

    $ 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
    

Alterar a palavra-passe do administrador do sistema (SA)

A conta sa é um administrador de sistema na instância do SQL Server criada durante a instalação. Depois de criar o contêiner do SQL Server, a variável de ambiente MSSQL_SA_PASSWORD especificada pode ser detetada executando echo $MSSQL_SA_PASSWORD no contêiner. Por motivos de segurança, altere a sua palavra-passe sa:

  1. Escolha uma senha forte para usar na conta sa. Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

  2. Use docker exec para executar o utilitário sqlcmd para alterar a senha através de uma instrução Transact-SQL. Substitua <old-password> e <new-password> por seus próprios valores de senha:

    Importante

    A variável de ambiente SA_PASSWORD foi preterida. Use MSSQL_SA_PASSWORD em vez disso.

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U sa -P '<old-password>' \
       -Q 'ALTER LOGIN sa WITH PASSWORD="<new-password>"'
    
    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U sa -P "<old-password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    

Copiar um arquivo de backup para o contêiner

Este tutorial usa os bancos de dados de exemplo Wide World Importers para Microsoft SQL. Use as etapas a seguir para baixar e copiar o arquivo de backup do banco de dados Wide World Importers para seu contêiner do SQL Server.

  1. Primeiro, use docker exec para criar uma pasta de backup. O comando a seguir cria um diretório /var/opt/mssql/backup dentro do contêiner do SQL Server.

    sudo docker exec -it sql1 mkdir /var/opt/mssql/backup
    
  2. Em seguida, transfira o ficheiro WideWorldImporters-Full.bak para o seu computador anfitrião. Os comandos a seguir navegam até o diretório home/user e baixam o arquivo de backup 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'
    
  3. Use docker cp para copiar o arquivo de backup para o contêiner no diretório /var/opt/mssql/backup.

    sudo docker cp wwi.bak sql1:/var/opt/mssql/backup
    

Restaurar o banco de dados

O arquivo de backup agora está localizado dentro do contêiner. Antes de restaurar o backup, é importante conhecer os nomes de arquivos lógicos e os tipos de arquivos dentro do backup. Os comandos Transact-SQL a seguir inspecionam o backup e executam a restauração usando sqlcmd no contêiner.

Dica

Este tutorial usa sqlcmd dentro do contêiner, porque o contêiner vem com essa ferramenta pré-instalada. No entanto, você também pode executar instruções Transact-SQL com outras ferramentas de cliente fora do contêiner, como extensão do SQL Server para Visual Studio Code ou Usar o SQL Server Management Studio no Windows para gerenciar o SQL Server no Linux. Para se conectar, use a porta de host que foi mapeada para a porta 1433 no contêiner. Neste exemplo, o anfitrião e a porta são localhost,1401 na máquina anfitriã e Host_IP_Address,1401 remotamente.

  1. Execute sqlcmd dentro do contêiner para listar nomes de arquivos lógicos e caminhos dentro do backup. Isto é feito com a instrução RESTORE FILELISTONLY Transact-SQL.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd -S localhost \
       -U sa -P '<new-password>' \
       -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/wwi.bak"' \
       | tr -s ' ' | cut -d ' ' -f 1-2
    

    Os resultados devem ser semelhantes aos seguintes resultados:

    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_1
    
  2. Chame o comando RESTORE DATABASE para restaurar o banco de dados dentro do contêiner. Especifique novos caminhos para cada um dos arquivos na etapa anterior.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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"'
    

    Os resultados devem ser semelhantes aos seguintes resultados:

    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).
    

Verifique o banco de dados restaurado

Execute a seguinte consulta para exibir uma lista de nomes de banco de dados em seu contêiner:

sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
   -S localhost -U sa -P '<new-password>' \
   -Q 'SELECT name FROM sys.databases'

Você deve ver WideWorldImporters na lista de bancos de dados.

Fazer uma alteração

Siga estas etapas para fazer uma alteração no banco de dados.

  1. Execute uma consulta para exibir os 10 principais itens na tabela Warehouse.StockItems.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT TOP 10 StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems ORDER BY StockItemID'
    

    Você verá uma lista de identificadores e nomes de itens:

    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 bar
    
  2. Atualize a descrição do primeiro item com a seguinte instrução UPDATE:

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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'
    

    Deverá ver uma saída semelhante ao seguinte texto:

    (1 rows affected)
    StockItemID StockItemName
    ----------- ------------------------------------
              1 USB missile launcher (Dark Green)
    

Criar um novo backup

Depois de restaurar seu banco de dados em um contêiner, você também pode querer criar regularmente backups de banco de dados dentro do contêiner em execução. As etapas seguem um padrão semelhante às etapas anteriores, mas em sentido inverso.

  1. Use o comando BACKUP DATABASE Transact-SQL para criar um backup de banco de dados no contêiner. Este tutorial cria um novo arquivo de backup, wwi_2.bak, no diretório /var/opt/mssql/backup criado anteriormente.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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"
    

    Os resultados devem ser semelhantes aos seguintes resultados:

    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).
    
  2. Em seguida, copie o arquivo de backup para fora do contêiner e para sua máquina host.

    cd ~
    sudo docker cp sql1:/var/opt/mssql/backup/wwi_2.bak wwi_2.bak
    ls -l wwi*
    

Usar os dados persistentes

Além de fazer backups de banco de dados para proteger seus dados, você também pode usar contêineres de volume de dados. O início deste tutorial criou o contêiner sql1 com o parâmetro -v sql1data:/var/opt/mssql. O contêiner de volume de dados sql1data persiste os dados /var/opt/mssql mesmo depois que o contêiner é removido. As etapas a seguir removem completamente o contêiner sql1 e, em seguida, criam um novo contêiner, sql2, com os dados persistentes.

  1. Pare o contentor sql1.

    sudo docker stop sql1
    
  2. Retire o recipiente. Isso não exclui o contêiner de volume de dados sql1data criado anteriormente e os dados persistentes nele.

    sudo docker rm sql1
    
  3. Crie um novo contêiner, sql2e reutilize o contêiner de volume de dados sql1data.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
    
  4. A base de dados Wide World Importers está agora no novo contentor. Execute uma consulta para verificar a alteração anterior feita.

    sudo docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    A palavra-passe sa não é a palavra-passe que especificou para o contentor sql2, MSSQL_SA_PASSWORD=<password>. Todos os dados do SQL Server foram restaurados a partir do sql1, incluindo a senha alterada do início do tutorial. Na verdade, algumas opções como esta são ignoradas devido à restauração dos dados em /var/opt/mssql. Por esse motivo, a senha é <new-password> como mostrado aqui.

  1. Pare o contentor sql1.

    sudo docker stop sql1
    
  2. Retire o recipiente. Isso não exclui o contêiner de volume de dados sql1data criado anteriormente e os dados persistentes nele.

    sudo docker rm sql1
    
  3. Crie um novo contêiner, sql2e reutilize o contêiner de volume de dados sql1data.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
    
  4. A base de dados Wide World Importers está agora no novo contentor. Execute uma consulta para verificar a alteração anterior feita.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    A palavra-passe sa não é a palavra-passe que especificou para o contentor sql2, MSSQL_SA_PASSWORD=<password>. Todos os dados do SQL Server foram restaurados a partir do sql1, incluindo a senha alterada do início do tutorial. Na verdade, algumas opções como esta são ignoradas devido à restauração dos dados em /var/opt/mssql. Por esse motivo, a senha é <new-password> como mostrado aqui.

  1. Pare o contentor sql1.

    sudo docker stop sql1
    
  2. Retire o recipiente. Isso não exclui o contêiner de volume de dados sql1data criado anteriormente e os dados persistentes nele.

    sudo docker rm sql1
    
  3. Crie um novo contêiner, sql2e reutilize o contêiner de volume de dados sql1data.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2022-latest
    
  4. A base de dados Wide World Importers está agora no novo contentor. Execute uma consulta para verificar a alteração anterior feita.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    A palavra-passe sa não é a palavra-passe que especificou para o contentor sql2, MSSQL_SA_PASSWORD=<password>. Todos os dados do SQL Server foram restaurados a partir do sql1, incluindo a senha alterada do início do tutorial. Na verdade, algumas opções como esta são ignoradas devido à restauração dos dados em /var/opt/mssql. Por esse motivo, a senha é <new-password> como mostrado aqui.

  1. Pare o contentor sql1.

    sudo docker stop sql1
    
  2. Retire o recipiente. Isso não exclui o contêiner de volume de dados sql1data criado anteriormente e os dados persistentes nele.

    sudo docker rm sql1
    
  3. Crie um novo contêiner, sql2e reutilize o contêiner de volume de dados sql1data.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2025-latest
    
  4. A base de dados Wide World Importers está agora no novo contentor. Execute uma consulta para verificar a alteração anterior feita.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    A palavra-passe sa não é a palavra-passe que especificou para o contentor sql2, MSSQL_SA_PASSWORD=<password>. Todos os dados do SQL Server foram restaurados a partir do sql1, incluindo a senha alterada do início do tutorial. Na verdade, algumas opções como esta são ignoradas devido à restauração dos dados em /var/opt/mssql. Por esse motivo, a senha é <new-password> como mostrado aqui.

Atenção

Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

Próximo passo

Neste tutorial, você aprendeu como fazer backup de um banco de dados no Windows e movê-lo para um servidor Linux que executa o SQL Server 2017 (14.x) em um contêiner. Você aprendeu a:

Neste tutorial, você aprendeu como fazer backup de um banco de dados no Windows e movê-lo para um servidor Linux que executa o SQL Server 2019 (15.x) em um contêiner. Você aprendeu a:

Neste tutorial, você aprendeu como fazer backup de um banco de dados no Windows e movê-lo para um servidor Linux que executa o SQL Server 2022 (16.x) em um contêiner. Você aprendeu a:

Neste tutorial, aprendeste a fazer backup de uma base de dados no Windows e a transferi-la para um servidor Linux a correr SQL Server 2025 (17.x) num contentor. Você aprendeu a:

  • Crie imagens de contêiner do SQL Server Linux.
  • Copie backups de banco de dados do SQL Server em um contêiner.
  • Execute instruções Transact-SQL com sqlcmd.
  • Crie e extraia arquivos de backup de um contêiner.
  • Use contêineres de volume de dados para persistir os dados de produção do SQL Server.

Em seguida, analise outros cenários de configuração e solução de problemas de contêiner:

Contribuir para a documentação SQL

Você sabia que você mesmo pode editar conteúdo SQL? Se o fizer, não só ajudará a melhorar a nossa documentação, como também será creditado como contribuidor da página.

Para obter mais informações, consulte Editar a documentação do Microsoft Learn.