Database
 sql >> Base de données >  >> RDS >> Database

Migration de bases de données SQL avec ligne de commande

Que se passe-t-il si vous avez des dizaines de bases de données SQL et que la sauvegarde/restauration manuelle de chaque base de données prend trop de temps pour votre projet ? Aucun problème! Nous pouvons scripter une méthode qui exportera et importera toutes les bases de données à la fois sans nécessiter d'intervention manuelle. Pour obtenir de l'aide sur le transfert des connexions SQL et des procédures et vues stockées, consultez notre article sur la migration MSSQL avec SSMS.

Sauvegarde des bases de données sur le serveur source

1. Ouvrez SSMS (Microsoft SQL Server Management Studio) sur le serveur source, connectez-vous à l'instance SQL et ouvrez une fenêtre Nouvelle requête. Exécutez la requête suivante :

SELECT name FROM master.sys.databases

Cette commande affichera une liste de toutes les bases de données MSSQL sur votre serveur. Pour copier cette liste, cliquez n'importe où dans les résultats et utilisez le raccourci clavier CTRL+A (Commande + A pour les utilisateurs Mac) pour sélectionner toutes les bases de données. Après avoir mis en surbrillance toutes les bases de données, cliquez avec le bouton droit de la souris et sélectionnez Copier.

2. Ouvrez le Bloc-notes, collez vos résultats et supprimez toutes les bases de données (dans le texte du bloc-notes nouvellement copié) que vous ne souhaitez PAS migrer, ainsi que les entrées suivantes :

  • maître
  • tempdb
  • modèle
  • msdb

Ces entrées sont les bases de données du système et leur copie n'est pas nécessaire. Assurez-vous de tout supprimer sauf explicitement les bases de données que vous devez migrer. Vous devriez maintenant avoir une liste de toutes les bases de données requises séparées par une ligne. c'est-à-dire

  • AdventureWorks 2012
  • AdventureWorks 2014
  • AdventureWorks 2016

3. Enregistrez ce résultat sur l'ordinateur sous C:\databases.txt .

4. Créez une nouvelle fenêtre Bloc-notes, copiez/collez ce qui suit dans le document et enregistrez-le sous C:\db-backup.bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. Maintenant que vous avez enregistré le fichier sous C:\db-backup.bat, accédez au Démarrer menu et tapez cmd et faites un clic droit sur Invite de commandes pour sélectionner Exécuter en tant qu'administrateur .Tapez la commande suivante :

cd C:\

Et appuyez sur Entrée. Ensuite, tapez db-backup.bat et appuyez à nouveau sur Entrée.

À ce stade, vos bases de données ont commencé à être exportées et vous verrez le pourcentage de progression de chaque exportation de base de données (illustré ci-dessous).

Prenez note de toutes les bases de données défaillantes, car vous pouvez réexécuter le fichier de commandes une fois terminé, en utilisant uniquement les bases de données susceptibles d'avoir échoué. Si les bases de données ne parviennent pas à sauvegarder, notez le message d'erreur affiché dans l'invite de commande, corrigez l'erreur en modifiant le fichier C:\databases.txt existant pour inclure uniquement les bases de données défaillantes et relancez db-backup.bat jusqu'à ce que toutes les bases de données soient exportées avec succès.

Restauration des bases de données sur le serveur de destination

Vous avez maintenant le dossier C:\dbbackups\ qui contient des fichiers .bak pour chaque base de données que vous souhaitez migrer. Vous devrez copier le dossier et votre C:\databases.txt fichier sur le serveur de destination. Il existe de nombreuses façons de déplacer vos données vers le serveur de destination; vous pouvez utiliser USB, Robocopy ou FTP. Le dossier sur le lecteur C du serveur de destination doit s'appeler C:\dbbackups . Il est important de nommer le fichier avec précision car notre script recherchera les fichiers .bak ici. Assurez-vous que le serveur de destination dispose également de votre fichier C:\databases.txt, car notre script recherchera les noms de bases de données ici.

1. Ouvrez un bloc-notes et copiez/collez ce qui suit dans le document et enregistrez-le sous C:\db-restore.bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. Enregistrez le fichier sous C:\db-restore .chauve-souris

3. Accédez au menu Démarrer et tapez cmd .

4. Faites un clic droit sur Invite de commandes et sélectionnez Exécuter en tant qu'administrateur . Tapez la commande suivante :

cd C:\

et appuyez sur Entrée. Tapez maintenant db-restore.bat et appuyez sur Entrée.

Vos bases de données ont maintenant commencé l'importation. Vous verrez le pourcentage de restauration de chaque base de données et le message "RESTORE DATABASE traité avec succès ” pour chaque base de données qui a été traitée avec succès.

Prenez note de toutes les bases de données défaillantes, car vous pouvez réexécuter le fichier de commandes une fois terminé, en utilisant uniquement les bases de données qui ont échoué. Si les bases de données ne parviennent pas à sauvegarder, notez le message d'erreur affiché dans l'invite de commande, corrigez l'erreur (vous pouvez modifier le fichier de commandes si nécessaire), modifiez C:\databases.txt pour inclure uniquement les bases de données défaillantes et re -exécuter db-restore.bat jusqu'à ce que toutes les bases de données soient exportées avec succès.

Félicitations, vous avez maintenant sauvegardé et restauré toutes vos bases de données sur le nouveau serveur. Si vous rencontrez des problèmes de connexion lors du test des connexions SQL sur le serveur de destination, reportez-vous à la section Migrating Microsoft SQL Logins (anchor link) section de cet article et suivez les étapes qui y sont décrites. Pour migrer des vues ou des procédures stockées, veuillez vous référer à la section Migrer des vues et des procédures stockées section. Chaque serveur SQL aura ses configurations et ses obstacles à surmonter, mais nous espérons que cet article vous a donné une base solide pour votre migration vers Microsoft SQL Server.