320 likes | 435 Views
Industrialisation des Dev . Avec SQL SERVER & VS/TFS Présent et futur. Michel Perfetti – MVP Visual Studio ALM – Winwise [ Twitter ] @ miiitch [Blog] http ://www.buildmeimfamous.net. Agenda. Il était une fois, une procédure stockée Ça n’arrive pas qu’aux autres
E N D
Industrialisation des Dev. Avec SQL SERVER & VS/TFSPrésent et futur Michel Perfetti – MVP Visual Studio ALM – Winwise [Twitter] @miiitch [Blog] http://www.buildmeimfamous.net
Agenda • Il était une fois, une procédure stockée • Ça n’arrive pas qu’aux autres • Pourquoi cela ne peut pas marcher comme cela • Industrialisation avec VS/TFS 2010 • Server Server Data Tools (le futur proche)
Il était une foiS… CREATE PROCEDURE sp_getHeavyObjects @minWeightdecimal(8,2) AS BEGIN SET NOCOUNT ON; SELECT * FROM dbo.Product WHERE Weight > @minWeight END ALTER PROCEDURE sp_getHeavyObjects @minWeightdecimal(8,2) AS BEGIN SET NOCOUNT ON; SELECT ProductID, WeightFROM dbo.Product WHERE Weight > @minWeight END !!! Main Mise en prod MAJ de la MAIN Prod ALTER PROCEDURE [dbo].[sp_getHeavyObjects] @minWeightdecimal(8,2) AS BEGIN SET NOCOUNT ON; SELECT TOP(10) * FROM dbo.Product WHERE Weight > @minWeight ORDER BY Weight DESC END
Ca n’arrive pas qu’aux autres… « Toute ressemblance avec une situation existante n’est pas vraiment fortuite »
Ca n’arrive pas qu’aux autres… • Il manque une proc stoc/table pas à jour • Il manque des GO dans les scripts de mise à jour • J’ai trop de scripts de mise à jour et je ne sais pas dans quel ordre les lancer • J’ai un script qui en écrase un autre. • Il y a un script (sur 15) qui ne passe pas! • MINCE il faut faire un rollback! • Il manque des données du référentiel • C’est quoi le script de la prod précédente? • J’ai écrasé une optim des DBA • J’ai perdu des grants (drop proc stock/index…) • Création avec le mauvais schéma (en fonction du user si schéma par défaut n’est pas dbo)
2 modeles de programmation Déclarative Impérative Mise à jours par scripts à coups d’ALTER… Il faut tenir compte de l’état antérieur, des données Certaines validations au runtime • Tous les langages compilés • Pas d’état antérieur à gérer • On compile et on remplace • Le compilateur vérifie la cohérence Il faut un modèle déclaratif pour la base de données
Projets « Databases » DBA/QA/…. Equipe de dev
Développement • Projets « SQL Server 2005/2008 » • Création de toutes pièces • Reverse engineering d’une base existante • Supporte SQLCMD • Historisation via TFS • Offline: travaille sur un ensemble de scripts, pas sur une base • « Compilation » • Les scripts réunis dans un projet sont compilables au format .dbschema (fichier xml) • Les erreurs de cohérence sont détectées et relevées à la compilation, sans exécution préalable sur une base de données • Le fichier .dbschema peut être utilisé pour les comparaisons de schémas • Plus besoins de faire d’ALTER
Développement – SYnchRO. • Projet VS 2010 Database • Projet VS 2010 Projet VS 2010 • Database Projet VS 2010 • Database Database Synchronisation de données ou de schémas
Développement – SYnchRO. Conséquences: • Vous contrôlez les mises à jours • Les scripts seront propres (transactions) Vous reprenez le contrôle de vos bases « You’vegot the power !» James Brown
Développement – SYnchRO. Plusieurs stratégies de développement: • Une base en local pour chaque développeur (SqlExpress par exemple) le déploiement peut se faire à la compilation • Le développeur n’a pas à se soucier des développements des voisins • Difficile si il y a beaucoup de données nécessaires pour travailler • Une base de dev pour tous les développeurs : une personne doit être en charge des mises à jours de la base: • pratique si les périmètres des développeurs sont disjoints avec un cycle de dev rapide • Peut avoir une base qui marche par car il manque un dev pas terminé
Développement - Intellisence • Saisie prédictive disponible dans SQL Server Management Studio et dans Visual Studio 2010 • Dans VS 2010, sans avoir exécuté les scripts sur une base de données
Développement - Refactoring • Suppression des « * » dans les SP, les vues • Noms qualifiés / « FullyQualifiedNames » • Renommage de tables, colonnes, procs…: se base sur l’analyse de dépendances à partir du schéma
Validation – Analyse statique • C’est-à-dire: détection de problèmes via l’analyse du résultat de la compilation • Pour vous: un moyen de vous éviter des problèmes de bases sans avoir à lire tout les codes (surtout pour le legacy)
Validation - Tests • Data checksum / Expectedschema • Définition de la « forme » des données attendues: schéma de la table, checksum des données retournées • Emptyresultset • Absence de données dans un Resultset • Execution Time • Limite dans la durée d’exécution de la requête • Non EmptyResultset • Resultset contenant des données • Row Count • Nombre de lignes • Scalar Value • Comparaison des valeurs retournées par la requête cellule de Resultset par cellule
Deploiement – 2 scenarii • L’équipe de dév (DBA inclus) fournit les scripts • Premier déploiement: script SQL • Génération d’un script différentiel par l’équipe • La prod s’occupe de tout et la prod n’a pas VS! • Génération d’un script différentiel par la prod • A partir du schéma et de la base courante
SQL Server Data TOOLs « Juneau » Le futur
Introducing SQL Server Data Tools • SQL Server Database Project
Bases de données supportées • SQL Server 2005 • SQL Server 2008 • SQL Server 2012 • SQL Azure • Permet de changer de version par configuration.
Pour conclure • Les projets Databases: • Point de synchro entre les « dev » et la base • Historisation des modifications • Simplifications des mises à jours • Et l’ALM dans tout ça: • A vous de définir votre cycle de livraison • La base est un composant comme un autre • Pourquoi pas maintenir la compatibilité ascendante et livrée en décalé par rapport au « code »? • Découpler la modification de la base de la modification des binaires.
Merci à nos Sponsors Rencontrez les dans l’espace partenaires