Ce tutoriel montre comment migrer une base de données SQL Server existante vers SQL Azure. Il a été écrit dans le cadre d’une suite d’articles mais la procédure est exactement la même pour n’importe quelle base SQL Server et vous pouvez donc la suivre indépendamment des exemples proposés.
Dans notre projet démarré from scratch, nous sommes arrivés au stade suivant:
Pour pouvoir accéder à nos données depuis un téléphone, il nous faut les héberger sur un serveur accessible depuis l’extérieur. Dans notre cas, nous décidons d’utiliser la plateforme Azure, les motivations de ce choix sont détaillées dans l’article Architecture et découpage du projet . Nous verrons qu’il est très simple de migrer un projet existant vers Azure. Dans notre cas, nous migrerons 2 éléments différents:
Dans ce tutoriel, nous commencerons par migrer la base de données Sql Server vers Sql Azure. Si ceci est votre première expérience de la plateforme, nous créerons également le serveur Sql Azure en pas à pas. Nous modifierons la chaine de connexion du service WCF Data Services : le service fonctionnera toujours, mais en adressant cette fois Sql Azure. Nous obtiendrons l’architecture suivante à la fin de ce tutoriel:
Puis nous migrerons le service WCF Data Services vers la plateforme Azure sous la forme d’un web role dans le tutoriel suivant.
Tutoriels:
- CaveAVins Tutoriel 1 : L’accès aux données avec Sql Server et EF Code First - CaveAVins Tutoriel 2 : La publication des données en OData avec WCF Data Services - CaveAVins Tutoriel 3 : Migration d’une base SQL Server vers SQL Azure (vous êtes ici ) - CaveAVins Tutoriel 4 : Hébergement du service WCF Data Services dans Azure
Un outil de migration téléchargeable sur codeplex va vous permettre d’effectuer cette opération en quelques clics :
SQL Azure Migration Wizard
Une fois le fichier décompressé, lancez l’application.
Sélectionnez “Analyser et migrer base de données SQL”
Entrez le serveur SQL utilisé pour le stockage des données et cliquez sur “Connecter”.
Choisissez CaveAVins.Db.CaveAVinsContext. C’est le nom de la base de données qui a été générée par Entity Framework Code First.
Puis cliquez sur “Suivant”
Choisissez de scripter tous les objets : c’est le choix par défaut.
Voici un dernier rappel des éléments qui seront générés.
L’outil s’occupe de générer les scripts adéquats.
A présent, ces scripts vont être utilisés avec votre compte Azure pour générer la base de données Sql Azure correspondante.
Pour renseigner ces informations, vous aurez besoin d’un serveur Sql Azure sur lequel créer votre base de données. Si vous n’avez pas encore créé de serveur, réalisez les étapes du chapitre suivant.
Si c’est la première fois que vous utilisez Sql Azure, il vous faudra suivre les étapes suivantes.
Accédez au portail Azure et connectez-vous avec le live Id que vous avez utilisé pour créer votre compte Azure.
Sélectionnez “Base de données” ainsi que votre abonnement, puis cliquez sur “Créer”.
Sélectionnez la zone géographique la plus proche : “West Europe”.
Choisissez votre identifiant et mot de passe.
Ajoutez une règle autorisant n’importe à quelle machine – y compris Azure – à accéder à la base.
Votre serveur Sql Azure est créé et apparait maintenant dans le portail.
Vous pouvez repasser sur l’assistant de migration et compléter les champs avec les informations correspondantes apparaissant sur le portail :
Cliquez sur “Connecter”.
Puis sur “Créer la base”.
Entrez le nom de la base de données que vous souhaitez créer.
Cliquez sur “Suivant”.
La migration est terminée. Retournez sur le portail Azure, vous verrez apparaitre votre base de données.
Pour que notre service adresse la base de données SQL Azure, il suffit de modifier la chaine de connexion, que vous trouverez sur la droite du portail.
Cliquez sur “Afficher”.
Copiez la chaine de connexion ADO.Net et ajoutez-la dans une nouvelle section “connectionStrings” dans le web.config de notre service, comme ceci:
<connectionStrings> <add name="CaveAVinsContext" connectionString="Server=tcp:oy7122pvo6.database.windows.net,1433;Database=CaveAVins.Db.Azure;User ID=stephe@oy7122pvo6;Password=myPassword;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.SqlClient"/> </connectionStrings>
Le nom de la chaine de connexion est important, puisqu’il doit correspondre au nom du contexte EF Code First associé à notre base de données, dans notre cas : CaveAVinsContext.
Relancez le service : il accède maintenant à notre base de données Sql Azure !
Pour le prouver, ajoutons une ligne dans la table Wines, par l’intermédiaire de l’outil d’administration en ligne de Windows Azure:
Exécutons notre service et consultons la liste des vins à l’adresse: http://localhost:5972/CaveAVinsDataService.svc/Wines
Passons maintenant à la migration du service WCF Data Services. C’est ce que nous verrons dans le tutoriel suivant.