Wiederherstellen einer SQL Server-Datenbank in einem Linux-Container
Gilt für: SQL Server – Linux
In diesem Tutorial erfahren Sie, wie Sie eine SQL Server-Sicherungsdatei in ein Linux-Containerimage von SQL Server 2017 (14.x) in Docker verschieben und dort wiederherstellen.
In diesem Tutorial erfahren Sie, wie Sie eine SQL Server-Sicherungsdatei in ein Linux-Containerimage von SQL Server 2019 (15.x) in Docker verschieben und dort wiederherstellen.
In diesem Tutorial erfahren Sie, wie Sie eine SQL Server-Sicherungsdatei in ein Linux-Containerimage von SQL Server 2022 (16.x) in Docker verschieben und dort wiederherstellen.
- Übertragen Sie das neueste Linux-Containerimage von SQL Server per Pull, und führen Sie es aus.
- Kopieren Sie die Datenbankdatei von Wide World Importers in den Container.
- Stellen Sie die Datenbank im Container wieder her.
- Führen Sie Transact-SQL-Anweisungen aus, um die Datenbank anzuzeigen und zu ändern.
- Sichern Sie die geänderte Datenbank.
Voraussetzungen
- Sie benötigen eine installierte Containerlaufzeit, z. B. Docker oder Podman.
- Installieren des neuesten sqlcmd
- Systemanforderungen von SQL Server unter Linux
Bereitstellungsoptionen
Dieser Abschnitt enthält Bereitstellungsoptionen für Ihre Umgebung.
sqlcmd unterstützt den MSSQL_PID
-Parameter beim Erstellen von Containern derzeit nicht. Wenn Sie die sqlcmd-Anweisungen in diesem Lernprogramm verwenden, erstellen Sie einen Container mit der Entwickleredition von SQL Server. Verwenden Sie die Befehlszeilenschnittstellenanweisungen (CLI), um einen Container mit der Lizenz Ihrer Wahl zu erstellen. Mehr Informationen finden Sie unter Bereitstellen von und Herstellen einer Verbindung mit SQL Server in Linux-Containern.
Pullen und Ausführen des Containerimages
Öffnen Sie ein bash-Terminal unter Linux.
Pullen Sie das Linux-Containerimage von SQL Server 2017 (14.x) aus Microsoft Container Registry.
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
Verwenden Sie zum Ausführen des Containerimages mit Docker den folgenden Befehl:
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-latest
Mit diesem Befehl wird ein Container von SQL Server 2017 (14.x) erstellt, der standardmäßig die Developer-Edition enthält. Der SQL Server-Port
1433
wird auf dem Host als Port1401
bereitgestellt. Mit dem optionalen Parameter-v sql1data:/var/opt/mssql
wird ein Datenvolumecontainer namenssql1data
erstellt. Dieser wird verwendet, um die von SQL Server erstellten Daten permanent zu speichern.Wichtig
In diesem Beispiel wird ein Datenvolumecontainer innerhalb von Docker verwendet. Weitere Informationen finden Sie unter Konfigurieren von SQL Server-Containerimages in Docker.
Verwenden Sie den Befehl
docker ps
, um Ihre Container anzuzeigen.sudo docker ps -a
Wenn in der Spalte
STATUS
Up
(Aktiv) eingetragen ist, wird SQL Server im Container ausgeführt und überwacht den Port, der in der SpaltePORTS
angegeben ist. Wenn in der SpalteSTATUS
Ihres SQL Server-ContainersExited
angezeigt wird, lesen Sie Problembehandlung von SQL Server Docker-Containern.
$ 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
Öffnen Sie ein bash-Terminal unter Linux.
Pullen Sie das Linux-Containerimage von SQL Server 2019 (15.x) aus Microsoft Container Registry.
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
Verwenden Sie zum Ausführen des Containerimages mit Docker den folgenden Befehl:
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-latest
Mit diesem Befehl wird ein Container von SQL Server 2019 (15.x) erstellt, der standardmäßig die Developer-Edition enthält. Der SQL Server-Port
1433
wird auf dem Host als Port1401
bereitgestellt. Mit dem optionalen Parameter-v sql1data:/var/opt/mssql
wird ein Datenvolumecontainer namenssql1data
erstellt. Dieser wird verwendet, um die von SQL Server erstellten Daten permanent zu speichern.Wichtig
In diesem Beispiel wird ein Datenvolumecontainer innerhalb von Docker verwendet. Weitere Informationen finden Sie unter Konfigurieren von SQL Server-Containerimages in Docker.
Verwenden Sie den Befehl
docker ps
, um Ihre Container anzuzeigen.sudo docker ps -a
Wenn in der Spalte
STATUS
Up
(Aktiv) eingetragen ist, wird SQL Server im Container ausgeführt und überwacht den Port, der in der SpaltePORTS
angegeben ist. Wenn in der SpalteSTATUS
Ihres SQL Server-ContainersExited
angezeigt wird, lesen Sie Problembehandlung von SQL Server Docker-Containern.$ 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
Öffnen Sie ein bash-Terminal unter Linux.
Pullen Sie das Linux-Containerimage von SQL Server 2022 (16.x) aus Microsoft Container Registry.
sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
Verwenden Sie zum Ausführen des Containerimages mit Docker den folgenden Befehl:
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:2022-latest
Mit diesem Befehl wird ein Container von SQL Server 2022 (16.x) erstellt, der standardmäßig die Developer-Edition enthält. Der SQL Server-Port
1433
wird auf dem Host als Port1401
bereitgestellt. Mit dem optionalen Parameter-v sql1data:/var/opt/mssql
wird ein Datenvolumecontainer namenssql1data
erstellt. Dieser wird verwendet, um die von SQL Server erstellten Daten permanent zu speichern.Wichtig
In diesem Beispiel wird ein Datenvolumecontainer innerhalb von Docker verwendet. Weitere Informationen finden Sie unter Konfigurieren von SQL Server-Containerimages in Docker.
Verwenden Sie den Befehl
docker ps
, um Ihre Container anzuzeigen.sudo docker ps -a
Wenn in der Spalte
STATUS
Up
(Aktiv) eingetragen ist, wird SQL Server im Container ausgeführt und überwacht den Port, der in der SpaltePORTS
angegeben ist. Wenn in der SpalteSTATUS
Ihres SQL Server-ContainersExited
angezeigt wird, lesen Sie Problembehandlung von SQL Server Docker-Containern.$ 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
Ändern des Systemadministratorkennworts
Das SA
-Konto ist ein Systemadministrator für die SQL Server-Instanz, der während des Setups erstellt wird. Nach dem Erstellen Ihres SQL Server-Containers können Sie die von Ihnen festgelegte Umgebungsvariable MSSQL_SA_PASSWORD
ermitteln, indem Sie echo $MSSQL_SA_PASSWORD
im Container ausführen. Ändern Sie aus Sicherheitsgründen Ihr SA-Kennwort:
Wählen Sie ein sicheres Kennwort für den SA-Benutzer aus.
Verwenden Sie
docker exec
zum Ausführen des Hilfsprogramms sqlcmd, um das Kennwort über eine Transact-SQL-Anweisung zu ändern. Ersetzen Sie<YourStrong!Passw0rd>
und<YourNewStrong!Passw0rd>
durch Ihre eigenen Kennwortwerte:Wichtig
Die Umgebungsvariable
SA_PASSWORD
ist veraltet. Verwenden Sie stattdessenMSSQL_SA_PASSWORD
.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>'"
Kopieren einer Sicherungsdatei in den Container
In diesem Tutorial werden die Beispieldatenbanken von Wide World Importers für Microsoft SQL verwendet. Führen Sie die folgenden Schritte aus, um die Sicherungsdatei der Datenbank von Wide World Importers in Ihren SQL Server-Container herunterzuladen und zu kopieren:
Erstellen Sie zunächst mit dem Befehl
docker exec
einen Sicherungsordner. Mit dem folgenden Befehl wird im SQL Server-Container ein Verzeichnis vom Typ/var/opt/mssql/backup
erstellt:sudo docker exec -it sql1 mkdir /var/opt/mssql/backup
Laden Sie nun die Datei WideWorldImporters-Full.bak auf Ihren Hostcomputer herunter. Mit den folgenden Befehlen wechseln Sie zum Basis-/Benutzerverzeichnis und laden die Sicherungsdatei als
wwi.bak
herunter.cd ~ curl -L -o wwi.bak 'https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak'
Kopieren Sie mit dem Befehl
docker cp
die Sicherungsdatei in den Container im Verzeichnis/var/opt/mssql/backup
.sudo docker cp wwi.bak sql1:/var/opt/mssql/backup
Wiederherstellen der Datenbank
Die Sicherungsdatei befindet sich nun im Container. Bevor Sie die Sicherung wiederherstellen können, müssen Sie die logischen Dateinamen und Dateitypen in der Sicherung kennen. Mit den folgenden Transact-SQL-Befehlen überprüfen Sie die Sicherung und führen die Wiederherstellung aus, indem Sie den Befehl sqlcmd im Container verwenden.
Tipp
In diesem Tutorial wird der Befehl sqlcmd im Container verwendet, da er dieses vorinstallierte Tool bereits enthält. Sie können Transact-SQL-Anweisungen jedoch auch außerhalb des Containers mit anderen Clienttools wie die SQL Server-Erweiterung für Visual Studio Code ausführen oder SQL Server Management Studio unter Windows verwenden, um SQL Server unter Linux zu verwalten. Verwenden Sie zum Herstellen einer Verbindung den Hostport, der Port 1433 im Container zugeordnet wurde. In diesem Beispiel ist dies localhost,1401
auf dem Hostcomputer und Host_IP_Address,1401
für den Remotezugriff.
Führen Sie im Container den Befehl sqlcmd aus, um die logischen Dateinamen und Pfade in der Sicherung aufzulisten. Dies geschieht über die Transact-SQL-Anweisung
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-2
Es sollte eine Ausgabe angezeigt werden, die Folgendem ähnelt:
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
Rufen Sie den Befehl
RESTORE DATABASE
auf, um die Datenbank im Container wiederherzustellen. Geben Sie für jede der Dateien aus dem vorherigen Schritt einen neuen Pfad an.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"'
Es sollte eine Ausgabe angezeigt werden, die Folgendem ähnelt:
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).
Überprüfen der wiederhergestellten Datenbank
Führen Sie die folgende Abfrage aus, um eine Liste der Datenbanknamen in Ihrem Container anzuzeigen:
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourNewStrong!Passw0rd>' \
-Q 'SELECT Name FROM sys.Databases'
Es sollte WideWorldImporters
in der Liste der Datenbanken angezeigt werden.
Vornehmen einer Änderung
Führen Sie die folgenden Schritte aus, um eine Änderung in der Datenbank vorzunehmen.
Führen Sie eine Abfrage aus, um die obersten zehn Elemente der Tabelle
Warehouse.StockItems
anzuzeigen.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'
Es sollte eine Liste mit den Bezeichnern und Namen der Elemente angezeigt werden:
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
Aktualisieren Sie mit der folgenden
UPDATE
-Anweisung die Beschreibung des ersten Elements: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'
Es sollte eine Ausgabe angezeigt werden, die dem folgenden Text ähnelt:
(1 rows affected) StockItemID StockItemName ----------- ------------------------------------ 1 USB missile launcher (Dark Green)
Erstellen einer neuen Sicherung
Nachdem Sie Ihre Datenbank in einem Container wiederhergestellt haben, können Sie auch regelmäßige Datenbanksicherungen im ausgeführten Container erstellen. Die dafür erforderlichen Schritte ähneln den vorherigen, jedoch in umgekehrter Reihenfolge.
Erstellen Sie mit dem Transact-SQL-Befehl
BACKUP DATABASE
eine Datenbanksicherung im Container. In diesem Tutorial wird im zuvor erstellten Verzeichnis/var/opt/mssql/backup
eine neue Sicherungsdatei namenswwi_2.bak
erstellt.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"
Die Ausgabe sollte in etwa wie folgt aussehen:
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).
Kopieren Sie nun die Sicherungsdatei aus dem Container auf den Hostcomputer.
cd ~ sudo docker cp sql1:/var/opt/mssql/backup/wwi_2.bak wwi_2.bak ls -l wwi*
Verwenden der persistenten Daten
Zum Schutz Ihrer Daten können Sie neben Datenbanksicherungen auch Datenvolumecontainer verwenden. Zu Beginn dieses Tutorials haben Sie mit dem Parameter sql1
den Container -v sql1data:/var/opt/mssql
erstellt. Im Datenvolumecontainer sql1data
werden die Daten aus /var/opt/mssql
auch dann weiterhin gespeichert, wenn der Container gelöscht wird. Führen Sie die folgenden Schritte aus, um den Container sql1
vollständig zu entfernen und anschließend einen neuen Container namens sql2
mit den persistenten Daten zu erstellen.
Beenden Sie den Container
sql1
.sudo docker stop sql1
Entfernen Sie den Container. Durch diesen Vorgang werden der zuvor erstellte Datenvolumecontainer
sql1data
und die darin enthaltenen persistenten Daten nicht gelöscht.sudo docker rm sql1
Erstellen Sie einen neuen Container namens
sql2
, und verwenden Sie den Datenvolumecontainersql1data
erneut.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-latest
Die Datenbank von Wide World Importers befindet sich nun im neuen Container. Führen Sie eine Abfrage aus, um die vorherige Änderung zu überprüfen.
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'
Hinweis
Das SA-Kennwort ist nicht mit dem Kennwort identisch, das Sie für den Container
sql2
angegeben haben (MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>
). Alle SQL Server-Daten aussql1
wurden wiederhergestellt, einschließlich des zuvor in diesem Tutorial geänderten Kennworts. Einige Optionen wie diese werden aufgrund der Wiederherstellung der Daten in „/var/opt/mssql“ ignoriert. Daher lautet das Kennwort wie hier gezeigt<YourNewStrong!Passw0rd>
.
Beenden Sie den Container
sql1
.sudo docker stop sql1
Entfernen Sie den Container. Durch diesen Vorgang werden der zuvor erstellte Datenvolumecontainer
sql1data
und die darin enthaltenen persistenten Daten nicht gelöscht.sudo docker rm sql1
Erstellen Sie einen neuen Container namens
sql2
, und verwenden Sie den Datenvolumecontainersql1data
erneut.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-latest
Die Datenbank von Wide World Importers befindet sich nun im neuen Container. Führen Sie eine Abfrage aus, um die vorherige Änderung zu überprüfen.
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'
Hinweis
Das SA-Kennwort ist nicht mit dem Kennwort identisch, das Sie für den Container
sql2
angegeben haben (MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>
). Alle SQL Server-Daten aussql1
wurden wiederhergestellt, einschließlich des zuvor in diesem Tutorial geänderten Kennworts. Einige Optionen wie diese werden aufgrund der Wiederherstellung der Daten in „/var/opt/mssql“ ignoriert. Daher lautet das Kennwort wie hier gezeigt<YourNewStrong!Passw0rd>
.
Beenden Sie den Container
sql1
.sudo docker stop sql1
Entfernen Sie den Container. Durch diesen Vorgang werden der zuvor erstellte Datenvolumecontainer
sql1data
und die darin enthaltenen persistenten Daten nicht gelöscht.sudo docker rm sql1
Erstellen Sie einen neuen Container namens
sql2
, und verwenden Sie den Datenvolumecontainersql1data
erneut.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:2022-latest
Die Datenbank von Wide World Importers befindet sich nun im neuen Container. Führen Sie eine Abfrage aus, um die vorherige Änderung zu überprüfen.
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'
Hinweis
Das SA-Kennwort ist nicht mit dem Kennwort identisch, das Sie für den Container
sql2
angegeben haben (MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>
). Alle SQL Server-Daten aussql1
wurden wiederhergestellt, einschließlich des zuvor in diesem Tutorial geänderten Kennworts. Einige Optionen wie diese werden aufgrund der Wiederherstellung der Daten in „/var/opt/mssql“ ignoriert. Daher lautet das Kennwort wie hier gezeigt<YourNewStrong!Passw0rd>
.
Nächster Schritt
In diesem Tutorial haben Sie erfahren, wie Sie eine Datenbank unter Windows sichern und auf einen Linux-Server verschieben, auf dem SQL Server 2017 (14.x) in einem Container ausgeführt wird. Sie haben Folgendes gelernt:
In diesem Tutorial haben Sie erfahren, wie Sie eine Datenbank unter Windows sichern und auf einen Linux-Server verschieben, auf dem SQL Server 2019 (15.x) in einem Container ausgeführt wird. Sie haben Folgendes gelernt:
In diesem Tutorial haben Sie erfahren, wie Sie eine Datenbank unter Windows sichern und auf einen Linux-Server verschieben, auf dem SQL Server 2022 (16.x) in einem Container ausgeführt wird. Sie haben Folgendes gelernt:
- Erstellen von Linux-Containerimages in SQL Server
- Kopieren von SQL Server-Datenbanksicherungen in einen Container
- Ausführen von Transact-SQL-Anweisungen mit sqlcmd.
- Erstellen und Extrahieren von Sicherungsdateien aus einem Container
- Permanentes Speichern von SQL Server-Produktionsdaten mithilfe von Datenvolumecontainern.
Lernen Sie als Nächstes weitere Szenarien zu Containerkonfiguration und Problembehandlung kennen:
Zur SQL-Dokumentation beitragen
Wussten Sie schon, dass Sie SQL-Inhalte selbst bearbeiten könnten? Hierdurch helfen Sie nicht nur mit, unsere Dokumentation zu verbessern, sondern Sie werden auch als Mitwirkender an der Seite aufgeführt.
Weitere Informationen finden Sie unter Mitwirken an der SQL Server-Dokumentation.