Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Blog de Vincent THAVONEKHAM, Objet Direct

ALM, DevOps, Windows Azure
Retour d’expérience. ALM avec SQL Azure et nouveaux outils (SQL Server Data Tools & nouveaux DACPAC Data-Tier Application project)

(Repris et simplifié de mon post d’origine => English version here: http://memoprojects.blogspot.fr/2012/04/lesson-learned-alm-with-sql-azure-and.html)

Ce post rappelle brièvement comment migrer simplement votre base de données dans SQL Azure, et fournit un retour d’expérience sur les derniers outils Microsoft. Le but étant d’avoir une ALM-SQL bien plus optimisée que ce que nous connaissons actuellement.

Le nombre d'outils (en alpha, beta, en Prod… Microsoft ou non, … CodePlex, …) sont considérables pour gérer Windows Azure.
Pour ajouter d’avantage de complexité, un seul et même outil (par exemple SQL Server Management Studio) permet potentiellement d'effectuer la même action mais en utilisant beaucoup de chemins différents. Ainsi, les combinatoires sont considérables. Cependant, toutes les combinaisons ne fonctionnent pas de la façon attendue, ou bien sont parfois sous-documentées pour le moment. Il faut parfois avoir recours à un KB comprendre pourquoi cela ne fonctionne pas comme imaginé.

Après avoir migré votre base de données SQL Server d’après les 4 premières étapes de mon post précédent (les autres étapes illustrent comme vérifier l'intégrité de votre migration), vous aurez besoin de créer un projet DACPAC. Cependant, cette fois-ci ce sera avec les 2 nouveaux outils Microsoft suivants:

* SQL Server Data Tools [gratuit], utilisé pour étendre Visual Studio 2010 http://msdn.microsoft.com/en-us/data/gg427686 (respectez les prérequis, qui peuvent prendre jusqu'à 1 heure d'install). Vous pourriez également envisager d'utiliser Visual Studio 11 Beta ... mais seulement sur la partie SQL Azure / DACPAC projets (en effet, pour le déploiement Windows Azure c’est une autre histoire avec VS11 Beta).
Cette extension permet de travailler avec des fichiers *.sql d’une façon plus efficace, comme nous le verrons plus tard.

* SQL Server 2012 Management Studio [pour le moment, afin de l’obtenir, installez SQL Server 2012 et décocher tout, sauf Management Studio. Je n’est pas essayé la version Express qui est en Stand-Alone]. Je vous recommanderais de ne pas utiliser SQL Server Management 2008 (sauf si vous souhaitez être confronté à quelques frustrations). En effet, avec la dernière version de Data-Tier Application projects, SQL Server Management 2008 présente quelques limitations mineures / (bugs? C'est une “feature”? Sourire ) Et certains fonctionnement de bases ont été déplacés / «améliorés» dans SQL Server Management Studio 2012.

Pour créer un nouveau type de “Data-tier Application project”, qui se nomme à présent “SQL Server Database project”, suivez l'étape 5 à 7 de mon précédent post.

Vous pouvez également laisser « VS2010 with SQL Server Data Tools" migrer un projet existant:

image

Dans les propriétés du DB project, vous devez cibler la plateforme "SQL Azure", et renseigner les propriétés de l’application, notamment le numéro de version approprié (ce numéro est utilisé par l '«intelligence» de DACPAC de SQL Server 2008 R2 ou 2012. Il n’est plus question de deployer de simple fichier texte *.sql).

image

On peut noter qu'en utilisant ce nouveau type de project DB, vous pouvez diminuer le nombre de fichiers *. Sql considérablement. Par exemple, il est possible de passer de 800 à 100 fichiers, en fonction de la complexité de votre base de données. Cela est lié au fait que le nouveau projet est organisée différemment:

* Terminé les sous-sous-sous-sous-dossiers ! et les nombreux fichiers *.sql (un pour chaque index unique, contrainte, etc ...) Voici l’exemple d'un ancien projet DB (ASP.Net membership provider):

image

* A présent, dans la nouvelle version, tout est bien regroupé dans une vue qui ressemble plus à du "SQL-server". Dans la partie supérieure ci-dessous (1), vous trouverez un Designer SQL pour les tables avec leurs contraintes et propriétés associés. Sur ​​partie inférieure (2), vous trouverez la version en texte brut comme à l'ancienne version ... sauf que vos contraintes, les index, ... font désormais partie de la même fichier.
Moins de fichiers signifie également moins de fichiers à obtenir / check-in et à suivre en termes de contrôle de code source.

image

NB: Remarquer de nouvelles options de "Build" sur les propriétés du fichier *. SQL (3).

Avec ce type de projet, en ciblant "SQL Azure" (qui représente le scénario le plus “contraignant”), vous pouvez publier soit sur SQL Server, soit sur SQL Azure en utilisant les mêmes T-SQL (vous pouvez ajouter quelques conditions IF si vous avez vraiment besoin d’instructions spécifiques SQL Azure).

En ce qui concerne le Publishing, vous pouvez définir un fichier de configuration par environnement (par exemple cliquez (1) pour charger des profils divers, tels que “server de validation”, localhost, SQL Azure Staging, SQL Azure PROD, ...) .
Pour obtenir la fenêtre “publishing Database” (notez que cela est appelé "publishing” et non plus “deploy"), cliquez-droit sur votre projet VS DB > "Publishing...”, puis attendez 2 à 10 secondes avant la pop-up modale:

image

Assurez-vous que vous avez coché les 2 options (2) afin de bénéficier du DACPAC. Enfin, cliquez sur “Publish…” (3). Du coup, en ne les cochant pas, une issue de secours sans DACPAC reste possible (en configurant les nombreuses options “Advanced…”)

Au cours du “Publishing”, vous verrez une nouvelle fenêtre de sortie “Data Tools Operations” qui est plutôt bien pensée et pratique.

image

Maintenant, si vous voulez déployer dans SQL Azure, il suffit de charger le fichier de configuration correspondant, et en 1 clic, tout est déployé sur SQL Azure !

Enfin, vous pouvez utiliser une ligne de commande pour qu'une build TFS-Build puisse automatiquement publier cela pour vous (toutefois, je ne recommanderais pas si vous “Buildez” en continu 10 ou 20 fois par jour … a moins d’avoir une grosse carte bleue associée à votre compte Windows AZURE).

Voici un exemple de temps de déploiement pour une base de données possédant moins de 100 Mo de données à “peupler” par script (sans Bulk Copy):

- Sur la base de données locale: 5 sec
- Sur SQL Azure (ADSL): 4 min
- Sur SQL Azure (Clef Internet USB): 15 min

 

Une dernière fonctionnalité fraîchement apparue que je souhaitais présenter pour faciliter votre ALM, c’est le "snapshot":

Par exemple, avant tout déploiement en Prod, vous gardez LA version qui sera livrée et archivez-là archivé par exemple dans une branche TFS. Il vous sera possible de l’exploiter ultérieurement (schema compare, …). En effet, un Snapshot va stocker votre projet sous forme de fichier DACPAC en quelques secondes (rappel: un fichier DACPAC est un fichier Zip de vous DB schema stockées sous forme de fichiers XML).image

Les nouvelles possibilités permettent un gain de productivité considérable et cross-platformes !

Bien que j'ai utilisé ces outils sur les projets plus volumineux que l’ASP.Net Membership provider (!), je serais vraiment intéressé par toute personne ayant d'autres feedbacks à ce sujet.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 4 avril 2012 01:08 par thavo

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21

- Onedrive Sync Engine Host : CPU à 100% par Le petit blog de Pierre / Pierre's little blog le 08-06-2014, 22:22

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25