1 / 32

Industrialisation des Dev . Avec SQL SERVER & VS/TFS Présent et futur

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

december
Download Presentation

Industrialisation des Dev . Avec SQL SERVER & VS/TFS Présent et futur

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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)

  3. 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

  4. Ca n’arrive pas qu’aux autres… « Toute ressemblance avec une situation existante n’est pas vraiment fortuite »

  5. 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)

  6. Pourquoi cela ne peut pas marcher comme cela

  7. 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

  8. Industrialisation avec VS/TFS 2010 Présent

  9. Projets « Databases » DBA/QA/…. Equipe de dev

  10. Developpement

  11. 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

  12. 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

  13. 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

  14. 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é 

  15. 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

  16. 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

  17. DEMO

  18. 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)

  19. 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

  20. DEMO

  21. 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

  22. DEMO

  23. SQL Server Data TOOLs « Juneau » Le futur

  24. SSDT= SSMS + VS 2010 + SQL SERVER EXPRESS + DESIGNERS +…

  25. Introducing SQL Server Data Tools • SQL Server Database Project

  26. Bases de données supportées • SQL Server 2005 • SQL Server 2008 • SQL Server 2012 • SQL Azure • Permet de changer de version par configuration.

  27. DEMO

  28. 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.

  29. QUESTIONS?

  30. Merci à nos Sponsors Rencontrez les dans l’espace partenaires

More Related