Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server unter Linux
Wenn Sie eine Datenbank von SQL Server unter Windows zu SQL Server unter Linux migrieren möchten, wird die Verwendung der SQL Server-Funktion Sichern und Wiederherstellen empfohlen. In diesem Tutorial werden Sie die erforderlichen Schritte durchlaufen, um eine Datenbank mit Hilfe von Sicherungs- und Wiederherstellungstechniken auf Linux zu verschieben.
- Erstellen Sie eine Backup-Datei unter Windows mit SQL Server Management Studio (SSMS)
- Installieren einer Bash-Shell unter Windows
- Verschieben Sie die Sicherungsdatei aus der Bash-Shell nach Linux.
- Wiederherstellen Sie die Backup-Datei unter Linux mit Transact-SQL (T-SQL)
- Ausführen einer Abfrage zur Überprüfung der Migration
Eine weitere Möglichkeit zur Migration einer SQL Server-Datenbank von Windows zu Linux besteht darin, eine SQL Server Always On-Verfügbarkeitsgruppe zu erstellen. Siehe Configure SQL Server Always On Verfügbarkeitsgruppe unter Windows und Linux (plattformübergreifend).
Voraussetzungen
Zur Durchführung dieses Tutorials ist Folgendes erforderlich:
Auf einem Windows-Computer:
- SQL Server installiert.
- SQL Server Management Studio (SSMS) muss installiert sein.
- Zieldatenbank, die migriert werden soll
Auf einem Linux-Computer:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Server oder Ubuntu) mit Befehlszeilentools.
Note
Ab SQL Server 2025 (17.x) wird SUSE Linux Enterprise Server (SLES) nicht unterstützt.
Erstellen einer Sicherung unter Windows
Es gibt mehrere Möglichkeiten, unter Windows eine Sicherungsdatei einer Datenbank zu erstellen. In den folgenden Schritten wird hierzu SQL Server Management Studio (SSMS) verwendet:
Starten Sie auf Ihrem Windows-Computer SQL Server Management Studio.
Geben Sie im Verbindungsdialogfeld localhost ein.
Erweitern Sie im Objekt-Explorer den Eintrag Datenbanken.
Klicken Sie mit der rechten Maustaste auf Ihre Zieldatenbank, wählen Sie Aufgaben aus und dann Back Up....
Vergewissern Sie sich im Dialogfeld Back Up Database, dass die Option Backup type auf Full und die Option Back up to auf Disk festgelegt ist. Beachten Sie den Namen und den Standort der Datei. Eine Datenbank mit dem Namen
YourDBauf SQL Server 2019 (15.x) hat zum Beispiel den Standard-SicherungspfadC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak.Wählen Sie OK aus, um die Datenbank zu sichern.
Eine weitere Möglichkeit ist, eine T-SQL-Abfrage auszuführen, um die Backup-Datei zu erstellen. Der folgende T-SQL-Befehl führt dieselben Aktionen aus wie die vorherigen Schritte für eine Datenbank namens YourDB:
BACKUP DATABASE [YourDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
GO
Installieren einer Bash-Shell unter Windows
Übertragen Sie zum Wiederherstellen der Datenbank zunächst die Sicherungsdatei vom Windows-Computer auf den Linux-Zielcomputer. In diesem Lernprogramm verschieben wir die Datei von einer Bash-Shell (Terminalfenster) auf Linux, die auf Windows ausgeführt wird.
Installieren Sie eine Bash-Shell auf Ihrem Windows Computer, die die Befehle scp (sichere Kopie) und sh (Remoteanmeldung) unterstützt. Zwei Beispiele hierfür sind:
Eröffne eine Bash-Sitzung unter Windows.
Kopieren der Sicherungsdatei zu Linux
Navigiere in deiner Bash-Sitzung zum Verzeichnis, das deine Sicherungsdatei enthält. Beispiel:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\'Übertragen Sie mit dem Befehl scp die Datei auf den Linux-Zielcomputer. Das folgende Beispiel überträgt
YourDB.bakin das Home-Verzeichnis vonuser1auf dem Linux-Server mit der IP-Adresse 192.168.2.9:scp YourDB.bak user1@192.168.2.9:./Die Ausgabe sollte der folgenden ähneln:
The authenticity of host '192.168.2.9 (192.168.2.9)' can't be established. ECDSA key fingerprint is SHA256: aB1cD2eF-3gH4iJ5kL6-mN7oP8qR= Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.9' (ECDSA) to the list of known hosts. Password: YourDB.bak 100% 8960KB 7.4MB/s 00:01
Tip
Es gibt Alternativen zur Verwendung von scp für die Dateiübertragung. So können Sie beispielsweise mit Samba eine SMB-Netzwerkfreigabe zwischen Windows und Linux konfigurieren. Eine Anleitung für Ubuntu finden Sie unter Samba als Dateiserver. Nachdem Sie die Freigabe erstellt haben, können Sie darauf von Windows aus wie auf eine Netzwerkdateifreigabe zugreifen (z. B. mit \\machinenameorip\share).
Verschieben der Sicherungsdatei vor der Wiederherstellung
Nun befindet sich die Sicherungsdatei auf dem Linux-Server im Basisverzeichnis Ihres Benutzers. Bevor Sie die Datenbank auf SQL Server wiederherstellen, müssen Sie die Sicherung in einem Unterverzeichnis von /var/opt/mssql platzieren, da dieses Verzeichnis dem Benutzer mssql und der Gruppe mssql gehört. Wenn Sie den Standard-Sicherungsort ändern möchten, lesen Sie den Artikel Konfiguration mit mssql-conf.
In derselben Windows-Bash-Sitzung verbinde dich remote mit deinem Ziel-Linux-Rechner mit ssh. Das folgende Beispiel stellt eine Verbindung zum Linux-Rechner
192.168.2.9als Benutzeruser1her.ssh user1@192.168.2.9Sie führen jetzt Befehle auf dem Remote-Linux-Server aus.
Geben Sie den Superusermodus ein.
sudo suErstellen Sie ein neues Sicherungsverzeichnis. Der Parameter
-pbewirkt nichts, wenn das Verzeichnis bereits existiert.mkdir -p /var/opt/mssql/backupVerschieben Sie die Sicherungsdatei in dieses Verzeichnis. Im folgenden Beispiel befindet sich die Sicherungsdatei im Basisverzeichnis von
user1. Ändern Sie den Befehl so, dass er mit dem Speicherort und dem Dateinamen Ihrer Sicherungsdatei übereinstimmt.mv /home/user1/YourDB.bak /var/opt/mssql/backup/Verlasse den Superuser-Modus.
exit
Wiederherstellen der Datenbank unter Linux
Um das Datenbank-Backup wiederherzustellen, können Sie den RESTORE DATABASE Befehl T-SQL verwenden.
Die folgenden Schritte verwenden das sqlcmd Tool. Wenn Sie keine SQL Server-Tools installiert haben, lesen Sie "Installieren der sqlcmd- und bcp SQL Server-Befehlszeilentools unter Linux".
Starten Sie
sqlcmdim selben Terminal. Das folgende Beispiel stellt eine Verbindung zur lokalen SQL Server-Instanz mit dem Kontosaher. Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden, oder geben Sie das Passwort durch Hinzufügen des Parameters-Pan.sqlcmd -S localhost -U saGeben Sie an der Eingabeaufforderung
>1den folgendenRESTORE DATABASE-Befehl ein und drücken Sie nach jeder Zeile ENTER (Sie können nicht den gesamten mehrzeiligen Befehl auf einmal kopieren und einfügen). Ersetzen SieYourDBjedes Mal durch den Namen Ihrer Datenbank.RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'; GODu solltest eine Meldung erhalten, dass die Datenbank erfolgreich wiederhergestellt wurde.
RESTORE DATABASEkönnte einen Fehler wie im folgenden Beispiel zurückgeben:File 'YourDB_Product' cannot be restored to 'Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf'. Use WITH MOVE to identify a valid location for the file. Msg 5133, Level 16, State 1, Server servername, Line 1 Directory lookup for the file "Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf" failed with the operating system error 2(The system cannot find the file specified.).In diesem Fall enthält die Datenbank sekundäre Dateien. Wenn diese Dateien nicht in der
MOVE-Klausel vonRESTORE DATABASEangegeben sind, versucht die Wiederherstellungsprozedur, sie unter demselben Pfad wie der ursprüngliche Server zu erstellen.Sie können alle in der Sicherung enthaltenen Dateien auflisten:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'; GODu solltest eine Liste wie das folgende Beispiel erhalten (nur die ersten beiden Spalten auflisten):
LogicalName PhysicalName .............. ------------------- ---------------------------------------------------------------------------- --------------- YourDB Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB.mdf .............. YourDB_Product Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Product.ndf .............. YourDB_Customer Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Customer.ndf .............. YourDB_Log Z:\Microsoft SQL Server\MSSQL15.GLOBAL\MSSQL\Data\YourDB\YourDB_Log.ldf ..............Sie können diese Liste verwenden, um
MOVE-Klauseln für die zusätzlichen Dateien zu erstellen. In diesem Beispiel siehtRESTORE DATABASEfolgendermaßen aus:RESTORE DATABASE YourDB FROM DISK = '/var/opt/mssql/backup/YourDB.bak' WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf', MOVE 'YourDB_Product' TO '/var/opt/mssql/data/YourDB_Product.ndf', MOVE 'YourDB_Customer' TO '/var/opt/mssql/data/YourDB_Customer.ndf', MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'; GOÜberprüfen Sie die Wiederherstellung, indem Sie alle Datenbanken auf dem Server auflisten. Dabei sollte die wiederhergestellte Datenbank aufgeführt werden.
SELECT name FROM sys.databases; GOFühren Sie für die migrierte Datenbank weitere Abfragen aus. Der folgende Befehl wechselt den Kontext zur Datenbank
YourDBund wählt Zeilen aus einer ihrer Tabellen aus.USE YourDB; SELECT * FROM YourTable; GOWenn Sie mit der Verwendung
sqlcmdfertig sind, geben Sie folgendes einexit.Wenn Sie die Arbeit in der remote ssh-Sitzung beendet haben, geben Sie erneut
exitein.
Nächster Schritt
In diesem Tutorial haben Sie erfahren, wie Sie eine Datenbank unter Windows sichern und auf einen Linux-Server mit SQL Server verschieben. Sie haben gelernt, wie Sie:
- Verwenden Sie SSMS und T-SQL, um eine Backup-Datei unter Windows zu erstellen
- Installieren einer Bash-Shell unter Windows
- Verschieben von Sicherungsdateien von Windows zu Linux mit scp
- Herstellen einer Remoteverbindung mit Ihrem Linux-Computer über ssh
- Verschieben der Sicherungsdatei als Vorbereitung für die Wiederherstellung
- Verwenden Sie
sqlcmd, um T-SQL-Befehle auszuführen. - Wiederherstellen der Datenbanksicherung mit dem Befehl
RESTORE DATABASE - Ausführen einer Abfrage zur Überprüfung der Migration
Lernen Sie als Nächstes weitere Migrationsszenarios für SQL Server unter Linux kennen.