Udostępnij za pośrednictwem


Przywracanie bazy danych programu SQL Server w kontenerze systemu Linux

Dotyczy:programu SQL Server — Linux

W tym samouczku pokazano, jak przenieść i przywrócić plik kopii zapasowej programu SQL Server do obrazu kontenera systemu Linux programu SQL Server 2017 (14.x) uruchomionego na platformie Docker.

W tym samouczku pokazano, jak przenieść i przywrócić plik kopii zapasowej SQL Server do obrazu kontenera SQL Server 2019 (15.x) działającego na Dockerze w środowisku Linux.

W tym samouczku pokazano, jak przenieść i przywrócić plik kopii zapasowej programu SQL Server do obrazu kontenera systemu Linux programu SQL Server 2022 (16.x) uruchomionego na platformie Docker.

  • Ściąganie i uruchamianie najnowszego obrazu kontenera systemu Linux programu SQL Server.
  • Skopiuj plik bazy danych Wide World Importers do kontenera.
  • Przywróć bazę danych w kontenerze.
  • Uruchom instrukcje Transact-SQL, aby wyświetlić i zmodyfikować bazę danych.
  • Utwórz kopię zapasową zmodyfikowanej bazy danych.

Warunki wstępne

Opcje wdrażania

Ta sekcja zawiera opcje wdrażania w środowisku.

sqlcmd obecnie nie obsługuje parametru MSSQL_PID podczas tworzenia kontenerów. Jeśli używasz instrukcji sqlcmd w tym samouczku, utworzysz kontener z wersją Developer SQL Server. Skorzystaj z instrukcji interfejsu wiersza polecenia , aby utworzyć kontener przy użyciu wybranej licencji. Aby uzyskać więcej informacji, zobacz Deploy and connect to SQL Server Linux containers (Wdrażanie i nawiązywanie połączenia z kontenerami systemu Linux programu SQL Server).

Ściąganie i uruchamianie obrazu kontenera

  1. Otwórz terminal powłoki bash w systemie Linux.

  2. Pobierz obraz kontenera programu SQL Server 2017 (14.x) z usługi Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    
  3. Aby uruchomić obraz kontenera za pomocą platformy Docker, możesz użyć następującego polecenia:

    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
    

    Ostrożność

    Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

    To polecenie tworzy kontener programu SQL Server 2017 (14.x) z wersją Developer (ustawienie domyślne). Port programu SQL Server 1433 jest uwidaczniony na hoście jako port 1401. Opcjonalny parametr -v sql1data:/var/opt/mssql tworzy kontener woluminów danych o nazwie sql1data. Służy do utrwalania danych utworzonych przez program SQL Server.

    Ważny

    W tym przykładzie użyto kontenera woluminów danych w ramach platformy Docker. Aby uzyskać więcej informacji, zobacz Konfiguracja obrazów kontenerów SQL Server w Dockerze.

  4. Aby wyświetlić kontenery, użyj polecenia docker ps.

    sudo docker ps -a
    
  5. Jeśli w kolumnie STATUS jest wyświetlany stan Up, program SQL Server jest uruchomiony w kontenerze i nasłuchuje na porcie określonym w kolumnie PORTS. Jeśli kolumna STATUS dla kontenera SQL Server zawiera Exited, zobacz Rozwiązywanie problemów z kontenerami Docker SQL Server.

$ 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. Otwórz terminal bash w systemie Linux.

  2. Pobierz obraz kontenera programu SQL Server 2019 (15.x) z usługi Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
    
  3. Aby uruchomić obraz kontenera za pomocą platformy Docker, możesz użyć następującego polecenia:

    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
    

    Ostrożność

    Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

    To polecenie tworzy kontener programu SQL Server 2019 (15.x) z wersją Developer (domyślna). Port programu SQL Server 1433 jest uwidaczniony na hoście jako port 1401. Opcjonalny parametr -v sql1data:/var/opt/mssql tworzy kontener woluminów danych o nazwie sql1data. Służy do utrwalania danych utworzonych przez program SQL Server.

    Ważny

    W tym przykładzie użyto kontenera woluminów danych w ramach platformy Docker. Aby uzyskać więcej informacji, zobacz Konfiguracja obrazów kontenerów SQL Server w Dockerze.

  4. Aby wyświetlić kontenery, użyj polecenia docker ps.

    sudo docker ps -a
    
  5. Jeśli w kolumnie STATUS jest wyświetlany stan Up, program SQL Server jest uruchomiony w kontenerze i nasłuchuje na porcie określonym w kolumnie PORTS. Jeśli kolumna STATUS dla kontenera SQL Server pokazuje Exited, zobacz Rozwiązywanie problemów z kontenerami Docker SQL Server.

    $ 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. Otwórz terminal powłoki bash w systemie Linux.

  2. Pobierz obraz kontenera programu SQL Server 2022 (16.x) z usługi Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  3. Aby uruchomić obraz kontenera za pomocą platformy Docker, możesz użyć następującego polecenia:

    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
    

    Ostrożność

    Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

    To polecenie tworzy kontener programu SQL Server 2022 (16.x) z wersją Developer (ustawienie domyślne). Port programu SQL Server 1433 jest uwidaczniony na hoście jako port 1401. Opcjonalny parametr -v sql1data:/var/opt/mssql tworzy kontener woluminów danych o nazwie sql1data. Służy do utrwalania danych utworzonych przez program SQL Server.

    Ważny

    W tym przykładzie użyto kontenera woluminów danych w ramach platformy Docker. Aby uzyskać więcej informacji, zobacz Konfiguruj obrazy kontenera SQL Server na Dockerze.

  4. Aby wyświetlić kontenery, użyj polecenia docker ps.

    sudo docker ps -a
    
  5. Jeśli w kolumnie STATUS jest wyświetlany stan Up, program SQL Server jest uruchomiony w kontenerze i nasłuchuje na porcie określonym w kolumnie PORTS. Jeśli kolumna STATUS dla kontenera SQL Server pokazuje Exited, zobacz Rozwiązywanie problemów z kontenerami Docker SQL Server.

    $ 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
    

Zmienianie hasła administratora systemu (SA)

Konto sa jest administratorem systemu w wystąpieniu programu SQL Server, które zostało utworzone podczas konfiguracji. Po utworzeniu kontenera programu SQL Server określona zmienna środowiskowa MSSQL_SA_PASSWORD jest wykrywalna przez uruchomienie echo $MSSQL_SA_PASSWORD w kontenerze. W celach bezpieczeństwa zmień hasło sa:

  1. Wybierz silne hasło do użycia dla konta sa. Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

  2. Użyj docker exec, aby uruchomić narzędzie sqlcmd, aby zmienić hasło za pomocą instrukcji Transact-SQL. Zastąp <old-password> i <new-password> własnymi wartościami haseł:

    Ważny

    Zmienna środowiskowa SA_PASSWORD jest przestarzała. Zamiast tego użyj MSSQL_SA_PASSWORD.

    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>'"
    

Kopiowanie pliku kopii zapasowej do kontenera

Ten samouczek używa przykładowych baz danych Wide World Importers dla programu Microsoft SQL. Wykonaj poniższe kroki, aby pobrać i skopiować plik kopii zapasowej bazy danych Wide World Importers do kontenera programu SQL Server.

  1. Najpierw użyj docker exec, aby utworzyć folder kopii zapasowej. Następujące polecenie tworzy katalog /var/opt/mssql/backup wewnątrz kontenera programu SQL Server.

    sudo docker exec -it sql1 mkdir /var/opt/mssql/backup
    
  2. Następnie pobierz plik WideWorldImporters-Full.bak na komputer hosta. Następujące polecenia przechodzą do katalogu macierzystego/użytkownika i pobierają plik kopii zapasowej jako 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. Użyj docker cp, aby skopiować plik kopii zapasowej do kontenera w katalogu /var/opt/mssql/backup.

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

Przywracanie bazy danych

Plik kopii zapasowej znajduje się teraz wewnątrz kontenera. Przed przywróceniem kopii zapasowej ważne jest, aby znać nazwy plików logicznych i typy plików wewnątrz kopii zapasowej. Następujące polecenia Transact-SQL sprawdzają kopię zapasową i wykonują przywracanie przy użyciu sqlcmd w kontenerze.

Napiwek

W tym samouczku wewnątrz kontenera używana jest sqlcmd, ponieważ kontener jest dostarczany z wcześniej zainstalowanym narzędziem. Można jednak również uruchomić instrukcje Transact-SQL z innymi narzędziami klienckimi spoza kontenera, takimi jak rozszerzenie programu SQL Server dla programu Visual Studio Code lub Używanie programu SQL Server Management Studio w systemie Windows do zarządzania programem SQL Server w systemie Linux. Aby nawiązać połączenie, użyj portu hosta mapowanego na port 1433 w kontenerze. W tym przykładzie host i port są localhost,1401 na maszynie hosta, a Host_IP_Address,1401 zdalnie.

  1. Uruchom sqlcmd wewnątrz kontenera, aby wyświetlić listę logicznych nazw plików i ścieżek wewnątrz kopii zapasowej. Jest to wykonywane za pomocą instrukcji 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
    

    Wyniki powinny wyglądać podobnie do następujących danych wyjściowych:

    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. Wywołaj polecenie RESTORE DATABASE, aby przywrócić bazę danych wewnątrz kontenera. Określ nowe ścieżki dla każdego z plików w poprzednim kroku.

    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"'
    

    Wyniki powinny wyglądać podobnie do następujących danych wyjściowych:

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

Weryfikowanie przywróconej bazy danych

Uruchom następujące zapytanie, aby wyświetlić listę nazw baz danych w kontenerze:

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

Powinna być widoczna WideWorldImporters na liście baz danych.

Wprowadzanie zmiany

Wykonaj następujące kroki, aby wprowadzić zmianę w bazie danych.

  1. Uruchom zapytanie, aby wyświetlić 10 pierwszych elementów w tabeli 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'
    

    Powinna zostać wyświetlona lista identyfikatorów i nazw elementów:

    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. Zaktualizuj opis pierwszego elementu za pomocą następującej instrukcji 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'
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następującego tekstu:

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

Tworzenie nowej kopii zapasowej

Po przywróceniu bazy danych do kontenera możesz również regularnie tworzyć kopie zapasowe bazy danych w uruchomionym kontenerze. Kroki przebiegają według wzorca podobnego do poprzednich, ale w odwrotnej kolejności.

  1. Użyj polecenia BACKUP DATABASE Transact-SQL, aby utworzyć kopię zapasową bazy danych w kontenerze. W tym samouczku zostanie utworzony nowy plik kopii zapasowej wwi_2.bakw wcześniej utworzonym katalogu /var/opt/mssql/backup.

    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"
    

    Wyniki powinny wyglądać podobnie do następujących danych wyjściowych:

    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. Następnie skopiuj plik kopii zapasowej z kontenera i na maszynę hosta.

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

Używanie utrwalonego danych

Oprócz tworzenia kopii zapasowych bazy danych na potrzeby ochrony danych można również używać kontenerów woluminów danych. Na początku tego samouczka kontener sql1 został utworzony z parametrem -v sql1data:/var/opt/mssql. Kontener woluminu danych sql1data utrwala dane /var/opt/mssql nawet po usunięciu kontenera. Poniższe kroki całkowicie usuwają kontener sql1, a następnie tworzą nowy kontener sql2z utrwalonymi danymi.

  1. Zatrzymaj kontener sql1.

    sudo docker stop sql1
    
  2. Usuń kontener. Nie powoduje to usunięcia utworzonego wcześniej kontenera woluminu danych sql1data i utrwalonych danych.

    sudo docker rm sql1
    
  3. Utwórz nowy kontener, sql2i ponownie użyj kontenera woluminu danych 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. Baza danych Wide World Importers znajduje się teraz w nowym kontenerze. Uruchom zapytanie, aby zweryfikować poprzednią zmianę.

    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'
    

    Hasło sa nie jest hasłem określonym dla kontenera sql2, MSSQL_SA_PASSWORD=<password>. Wszystkie dane programu SQL Server zostały przywrócone z sql1, w tym zmienione hasło z wcześniejszej części samouczka. W efekcie niektóre opcje takie jak te są ignorowane z powodu przywrócenia danych w pliku /var/opt/mssql. Z tego powodu hasło jest <new-password>, jak pokazano tutaj.

  1. Zatrzymaj kontener sql1.

    sudo docker stop sql1
    
  2. Usuń kontener. Nie powoduje to usunięcia utworzonego wcześniej kontenera woluminu danych sql1data i utrwalonych danych.

    sudo docker rm sql1
    
  3. Utwórz nowy kontener, sql2i ponownie użyj kontenera woluminu danych 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. Baza danych Wide World Importers znajduje się teraz w nowym kontenerze. Uruchom zapytanie, aby zweryfikować poprzednią zmianę.

    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'
    

    Hasło sa nie jest hasłem określonym dla kontenera sql2, MSSQL_SA_PASSWORD=<password>. Wszystkie dane programu SQL Server zostały przywrócone z sql1, w tym zmienione hasło z wcześniejszej części samouczka. W efekcie niektóre opcje takie jak te są ignorowane z powodu przywrócenia danych w pliku /var/opt/mssql. Z tego powodu hasło jest <new-password>, jak pokazano tutaj.

  1. Zatrzymaj kontener sql1.

    sudo docker stop sql1
    
  2. Usuń kontener. Nie powoduje to usunięcia utworzonego wcześniej kontenera woluminu danych sql1data i utrwalonych danych.

    sudo docker rm sql1
    
  3. Utwórz nowy kontener, sql2i ponownie użyj kontenera woluminu danych 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. Baza danych Wide World Importers znajduje się teraz w nowym kontenerze. Uruchom zapytanie, aby zweryfikować poprzednią zmianę.

    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'
    

    Hasło sa nie jest hasłem określonym dla kontenera sql2, MSSQL_SA_PASSWORD=<password>. Wszystkie dane programu SQL Server zostały przywrócone z sql1, w tym zmienione hasło z wcześniejszej części samouczka. W efekcie niektóre opcje takie jak te są ignorowane z powodu przywrócenia danych w /var/opt/mssql. Z tego powodu hasło jest <new-password>, jak pokazano tutaj.

Ostrożność

Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

Następny krok

W tym samouczku przedstawiono sposób tworzenia kopii zapasowej bazy danych w systemie Windows i przenoszenia jej na serwer z systemem Linux z programem SQL Server 2017 (14.x) w kontenerze. Wiesz już, jak wykonać następujące działania:

W tym samouczku przedstawiono sposób tworzenia kopii zapasowej bazy danych w systemie Windows i przenoszenia jej na serwer z systemem Linux z uruchomionym programem SQL Server 2019 (15.x) w kontenerze. Wiesz już, jak wykonać następujące działania:

W tym samouczku przedstawiono sposób tworzenia kopii zapasowej bazy danych w systemie Windows i przenoszenia jej do serwera z systemem Linux z uruchomionym programem SQL Server 2022 (16.x) w kontenerze. Wiesz już, jak wykonać następujące działania:

  • Utwórz obrazy kontenerów SQL Server dla systemu Linux.
  • Kopiowanie kopii zapasowych bazy danych programu SQL Server do kontenera.
  • Uruchom instrukcje Transact-SQL za pomocą sqlcmd.
  • Tworzenie i wyodrębnianie plików kopii zapasowych z kontenera.
  • Używanie kontenerów woluminów danych do utrwalania danych produkcyjnych programu SQL Server.

Następnie przejrzyj inne scenariusze konfiguracji kontenera i rozwiązywania problemów:

Współtworzenie dokumentacji SQL

Czy wiesz, że możesz samodzielnie edytować zawartość SQL? Jeśli to zrobisz, nie tylko pomożesz ulepszyć naszą dokumentację, ale także otrzymasz uznanie jako współautor tej strony.

Aby uzyskać więcej informacji, zobacz Jak współtworzyć dokumentację programu SQL Server