Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server op Linux
De functie voor back-up en herstel van SQL Server is de aanbevolen manier om een database te migreren van SQL Server in Windows naar SQL Server op Linux. In deze zelfstudie doorloopt u de stappen die nodig zijn voor het verplaatsen van een database naar Linux met back-up- en hersteltechnieken.
- Maak een back-upbestand aan op Windows met SQL Server Management Studio (SSMS)
- Een Bash-shell installeren in Windows
- Het back-upbestand verplaatsen naar Linux vanuit de Bash-shell
- Herstel het back-upbestand op Linux met Transact-SQL (T-SQL)
- Een query uitvoeren om de migratie te controleren
U kunt ook een SQL Server AlwaysOn-beschikbaarheidsgroep maken om een SQL Server-database van Windows naar Linux te migreren. Zie de SQL Server Always On beschikbaarheidsgroep configureren op Windows en Linux (cross-platform).
Prerequisites
De volgende vereisten zijn vereist om deze zelfstudie te voltooien:
Op een Windows-computer:
- SQL Server geïnstalleerd.
- SQL Server Management Studio geïnstalleerd.
- Doeldatabase om te migreren.
Op een Linux-computer:
- SQL Server (Red Hat Enterprise Linux, SUSE Linux Enterprise Server, of Ubuntu) met opdrachtregelprogramma's.
Note
Vanaf SQL Server 2025 (17.x) wordt SUSE Linux Enterprise Server (SLES) niet ondersteund.
Een back-up maken in Windows
Er zijn verschillende manieren om een back-upbestand van een database in Windows te maken. In de volgende stappen wordt SQL Server Management Studio (SSMS) gebruikt.
Start SQL Server Management Studio- op uw Windows-computer.
Voer in het verbindingsdialoog de tekst localhostin.
Vouw Databases uit in Objectverkenner.
Klik met de rechtermuisknop op de doeldatabase, selecteer Takenen selecteer vervolgens Back-up maken....
Controleer in het dialoogvenster Back-updatabase of de optie Back-uptype is ingesteld op Volledig en dat de optie Back-up maken naar is ingesteld op Schijf. Noteer de naam en locatie van het bestand. Een database met de naam
YourDBop SQL Server 2019 (15.x) heeft bijvoorbeeld een standaardback-uppad vanC:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\YourDB.bak.Selecteer OK- om een back-up van uw database te maken.
Een andere optie is om een T-SQL-query uit te voeren om het back-upbestand aan te maken. Het volgende T-SQL-commando voert dezelfde acties uit als de vorige stappen voor een database genaamd 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
Een Bash-shell installeren in Windows
Als u de database wilt herstellen, moet u eerst het back-upbestand van de Windows-computer overbrengen naar de Linux-doelcomputer. In deze zelfstudie verplaatsen we het bestand naar Linux vanuit een Bash-shell (terminalvenster) dat wordt uitgevoerd op Windows.
Installeer een Bash-shell op uw Windows-computer die ondersteuning biedt voor de opdrachten scp (veilig kopiëren) en ssh (externe aanmelding). Twee voorbeelden zijn:
Open een Bash-sessie op Windows.
Het back-upbestand kopiëren naar Linux
Navigeer in je Bash-sessie naar de map met je back-upbestand. Voorbeeld:
cd 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\'Gebruik de opdracht scp om het bestand over te dragen naar de Linux-doelcomputer. In het volgende voorbeeld worden
YourDB.bakovergedragen naar de basismap vanuser1op de Linux-server met een IP-adres van 192.168.2.9:scp YourDB.bak user1@192.168.2.9:./Dit is de verwachte uitvoer:
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
Er zijn alternatieven voor het gebruik van scp- voor bestandsoverdracht. Een is het gebruik van Samba om een SMB-netwerkshare tussen Windows en Linux te configureren. Zie Samba als bestandsservervoor een overzicht van Ubuntu. Zodra dit is ingesteld, kunt u deze openen als een netwerkbestandsshare vanuit Windows, zoals \\machinenameorip\share.
Het back-upbestand verplaatsen voordat u het herstelt
Op dit moment bevindt het back-upbestand zich op uw Linux-server in de basismap van uw gebruiker. Voordat u de database herstelt in SQL Server, moet u de back-up in een submap van /var/opt/mssql plaatsen, omdat deze submap eigendom is van de gebruiker mssql en groep mssql. Als u de standaardback-uplocatie wilt wijzigen, raadpleegt u het artikel Configureren met mssql-conf.
In dezelfde Windows Bash-sessie verbind je op afstand met je doel-Linux-machine met ssh. In het volgende voorbeeld wordt verbinding gemaakt met de Linux-machine
192.168.2.9als gebruikeruser1.ssh user1@192.168.2.9U voert nu opdrachten uit op de externe Linux-server.
Schakel over naar de supergebruikermodus.
sudo suMaak een nieuwe back-upmap. De parameter
-pdoet niets als de map al bestaat.mkdir -p /var/opt/mssql/backupVerplaats het back-upbestand naar die map. In het volgende voorbeeld bevindt het back-upbestand zich in de basismap van
user1. Wijzig de opdracht zodat deze overeenkomt met de locatie en bestandsnaam van het back-upbestand.mv /home/user1/YourDB.bak /var/opt/mssql/backup/Superusermodus afsluiten.
exit
Uw database herstellen in Linux
Om de database-back-up te herstellen, kun je het RESTORE DATABASE T-SQL-commando gebruiken.
In de volgende stappen wordt het sqlcmd hulpprogramma gebruikt. Zie SqlCmd en bcp SQL Server-opdrachtregelprogramma's installeren op Linux als u geen SQL Server-hulpprogramma's hebt geïnstalleerd.
Start
sqlcmdin dezelfde terminal. In het volgende voorbeeld wordt verbinding gemaakt met het lokale SQL Server-exemplaar met hetsa-account. Voer het wachtwoord in wanneer u hierom wordt gevraagd of geef het wachtwoord op door de parameter-Ptoe te voegen.sqlcmd -S localhost -U saVoer bij de
>1prompt de volgendeRESTORE DATABASEopdracht in en druk na elke regel op Enter (u kunt de volledige opdracht met meerdere regels niet tegelijk kopiëren en plakken). Vervang alle voorkomens vanYourDBdoor de naam van uw database.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'; GOJe zou een bericht moeten krijgen dat de database succesvol is hersteld.
RESTORE DATABASEkan een fout retourneren zoals het volgende voorbeeld laat zien: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 dit geval bevat de database secundaire bestanden. Als deze bestanden niet zijn opgegeven in de
MOVEcomponent vanRESTORE DATABASE, probeert de herstelprocedure deze te maken in hetzelfde pad als de oorspronkelijke server.U kunt alle bestanden in de back-up weergeven:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/YourDB.bak'; GOJe zou een lijst moeten krijgen zoals het volgende voorbeeld (met alleen de eerste twee kolommen):
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 ..............U kunt deze lijst gebruiken om
MOVEclausules te maken voor de extra bestanden. In dit voorbeeld is deRESTORE DATABASE: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'; GOControleer het herstel door alle databases op de server te vermelden. De herstelde database moet worden vermeld.
SELECT name FROM sys.databases; GOVoer andere query's uit op uw gemigreerde database. Met de volgende opdracht wordt de context overgeschakeld naar de
YourDB-database en worden rijen uit een van de tabellen geselecteerd.USE YourDB; SELECT * FROM YourTable; GOWanneer u klaar bent met het gebruik van
sqlcmd, typt uexit.Wanneer u klaar bent met werken in de externe ssh sessie, typt u
exitopnieuw.
Volgende stap
In deze zelfstudie hebt u geleerd hoe u een back-up maakt van een database in Windows en deze verplaatst naar een Linux-server met SQL Server. U hebt geleerd hoe u het volgende kunt doen:
- Gebruik SSMS en T-SQL om een back-upbestand aan te maken op Windows
- Een Bash-shell installeren in Windows
- Gebruik scp- om back-upbestanden van Windows naar Linux te verplaatsen
- Gebruik ssh- om op afstand verbinding te maken met uw Linux-computer
- Het back-upbestand verplaatsen om de herstelbewerking voor te bereiden
- Gebruik
sqlcmdom T-SQL-commando's uit te voeren - De databaseback-up herstellen met de opdracht
RESTORE DATABASE - Een query uitvoeren om de migratie te controleren
Bekijk vervolgens andere migratiescenario's voor SQL Server in Linux.