Utilisez SQL Server Management Studio (SSMS) pour migrer une base de données SQL Server vers Alibaba Cloud RDS for SQL Server. Cette méthode exporte la base de données source sous forme de fichier .bacpac et l'importe dans l'instance RDS de destination. Les exemples utilisent Azure SQL Database comme source.
L'exportation nécessitant que la base de données source soit hors ligne, cette méthode convient mieux aux migrations ponctuelles acceptant une fenêtre de maintenance.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
Une instance RDS for SQL Server répondant à toutes les exigences suivantes :
Exécute RDS Basic Edition, RDS High-availability Edition ou RDS Cluster Edition. Si elle exécute RDS High-availability Edition, elle doit utiliser SQL Server 2012 ou une version ultérieure.
Appartient à la famille d'instances généraliste ou dédiée. La famille d'instances partagées n'est pas prise en charge.
Utilise la méthode de facturation par abonnement ou paiement à l'utilisation. Les instances serverless ne sont pas prises en charge.
Réside dans un réseau privé virtuel (VPC). Pour modifier le type de réseau, consultez Modifier le type de réseau.
Dispose d'une capacité de stockage supérieure à celle de la base de données source. Dimensionnez l'instance de destination à au moins 1,2 fois la taille du stockage source. Si la capacité actuelle est insuffisante, augmentez la capacité de stockage avant de poursuivre.
-
A été créée à partir des dates suivantes, selon son édition :
RDS High-availability Edition ou RDS Cluster Edition : 1er janvier 2021
RDS Basic Edition : 2 septembre 2022
Pour vérifier la date de création, accédez à la page Basic Information de votre instance dans la console ApsaraDB RDS et recherchez le champ Creation Time dans la section Status .
-
SSMS installé sur votre ordinateur local ou sur une instance Elastic Compute Service (ECS). Si vous utilisez une instance ECS, elle doit résider dans un VPC, exécuter une image Windows Server et disposer d'une adresse IP publique attribuée.
Les exemples de ce guide utilisent SSMS 19.1. Les étapes peuvent varier en fonction de votre version de SSMS et de vos paramètres.
Un compte administrateur système sur l'instance RDS. Connectez-vous à l'instance avec votre compte Alibaba Cloud et créez un compte administrateur système.
-
Une liste d'autorisation d'adresses IP sur l'instance RDS autorisant les connexions depuis votre client :
Pour connecter une instance ECS via le réseau interne, l'instance ECS et l'instance RDS doivent résider dans la même région et le même VPC. Ajoutez l'adresse IP privée de l'instance ECS à la liste d'autorisation.
Pour vous connecter depuis un ordinateur local, ajoutez son adresse IP publique à la liste d'autorisation. Consultez Configurer une liste d'autorisation d'adresses IP.
Limitations
Passez en revue ces limitations avant de démarrer la migration :
La base de données source doit être hors ligne pendant l'exportation. L'exportation capture un instantané transactionnellement cohérent de la base de données ; aucune activité d'écriture ne peut donc avoir lieu pendant l'exécution de l'exportation. Prévoyez une fenêtre de maintenance qui tient compte à la fois de la durée d'exportation et de la durée d'importation. La vitesse d'exportation dépend des spécifications de l'instance source.
Les contraintes et les vues ne doivent pas provoquer d'échecs d'exportation. Validez le schéma de la base de données source avant l'exportation.
Les conflits de noms de base de données bloquent l'importation. Si une base de données portant le même nom existe déjà sur l'instance RDS de destination, l'importation échoue ou produit des données incohérentes.
-
Les niveaux de compatibilité doivent correspondre. Exécutez la requête suivante sur les instances source et de destination pour vérifier la compatibilité :
SELECT name, compatibility_level FROM sys.databases;Pour plus d'informations, consultez Niveau de compatibilité ALTER DATABASE.
Préparer la base de données source (Azure SQL Database)
Activez l'accès Internet à Azure SQL Database et configurez son pare-feu pour autoriser les connexions depuis l'adresse IP publique de votre instance ECS ou de votre ordinateur local. Pour obtenir des instructions, consultez la documentation Azure ou contactez le support Azure.
Étape 1 : Exporter les données depuis Azure SQL Database
Arrêtez toutes les écritures dans la base de données source avant l'exportation. Cela garantit que le fichier .bacpac exporté est transactionnellement cohérent.
Dans Object Explorer, développez Databases, cliquez avec le bouton droit sur la base de données que vous souhaitez migrer, puis choisissez Tasks > Export Data-tier Application.
Sur l'écran d'introduction, cliquez sur Next.
Page des paramètres d'exportation
Sous l'onglet Settings, sélectionnez Save To Local Disk.
Cliquez sur Browse, choisissez un emplacement d'enregistrement et saisissez un nom de fichier avec l'extension
.bacpac.-
Sous l'onglet Advanced, sélectionnez les tables à exporter.
Pour exporter d'autres objets tels que les déclencheurs et les procédures stockées, cliquez avec le bouton droit sur la base de données dans Object Explorer et choisissez Tasks > Generate Scripts . Pour plus d'informations sur l'assistant d'exportation, consultez Exporter une application de niveau données .
Cliquez sur Next.
Cliquez sur Finish pour démarrer l'exportation. Une fois l'exportation terminée, cliquez sur Close.
Étape 2 : Importer les données dans l'instance RDS
-
Ouvrez SSMS et connectez-vous à l'instance RDS. Dans la boîte de dialogue Connect to Server, configurez les paramètres suivants :
Paramètre Valeur Server type Database Engine Server name Le endpoint interne ou public de l'instance RDS. Pour trouver le endpoint, consultez Afficher et modifier les endpoints et les numéros de port. Authentication SQL Server Authentication Login Nom d'utilisateur du compte administrateur système Password Mot de passe du compte administrateur système Cliquez sur Connect.
Dans Object Explorer, cliquez avec le bouton droit sur Databases et sélectionnez Import Data-tier Application.
Cliquez sur Next.
Page des paramètres d'importation
Sélectionnez Import From Local Disk.
Cliquez sur Browse et sélectionnez le fichier
.bacpacexporté depuis la base de données source.Cliquez sur Next.
Page des paramètres de la base de données
-
Dans New Database Name, saisissez le nom de la base de données sur l'instance RDS.
ImportantUtilisez le même nom que la base de données source. Un nom différent peut entraîner l'échec des fonctionnalités de l'application après le basculement des charges de travail vers l'instance RDS.
Dans la section SQL Server Settings, définissez Data File Path et Log File Path sur
E:\SQLDATA\DATA.Cliquez sur Next.
Cliquez sur Finish pour démarrer l'importation. Une fois l'importation terminée, cliquez sur Close.
Étape 3 : Vérifier la cohérence des données
Exécutez les requêtes suivantes sur les bases de données source et de destination, puis comparez les résultats. Des résultats identiques confirment une migration cohérente.
Assurez-vous qu'aucune modification de données n'intervient sur la base de données source pendant l'exécution de ces requêtes. Toute modification effectuée après l'exportation entraînera une divergence des nombres de lignes.
Requête 1 : Vérifier le nombre total de lignes
USE <database name>;
SELECT SUM(b.rows) AS 'RowCount'
FROM sysobjects AS a INNER JOIN
sysindexes AS b ON a.id = b.id
WHERE (a.type = 'u') AND (b.indid IN (0, 1))
Requête 2 : Vérifier la taille des fichiers de données
USE <database name>;
SELECT a.name [File name]
,cast(a.[size]*1.0/128 as decimal(12,1)) AS [Specified file size (MB)]
,CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [Storage occupied by the file (MB)]
,CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [Percentage of the storage occupied by the file to the total storage capacity]
,CASE WHEN A.growth =0 THEN 'Fixed file size' ELSE 'Increment at which the storage that is allocated to the file increases' end [Increase mode]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN 'Fixed increment'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN 'Increment represented by an integer percentage'
ELSE 'Fixed file size' END AS [Increase mode]
,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%'
ELSE 'Fixed file size' end AS [Increment (% or MB)]
,a.physical_name AS [File directory]
,a.type_desc AS [File type]
FROM sys.database_files a
INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id]
ORDER BY a.[type]
Une fois la vérification de la cohérence des données terminée, basculez vos charges de travail vers l'instance RDS for SQL Server et testez si les fonctionnalités s'exécutent comme prévu.