SQL Server Data TOOLs « Juneau

publicité
Rejoignez la Communauté
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
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
@minWeight decimal(8,2)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM dbo.Product
WHERE Weight > @minWeight
END
ALTER PROCEDURE sp_getHeavyObjects
@minWeight decimal(8,2)
AS
BEGIN
SET NOCOUNT ON;
SELECT ProductID, Weight FROM
dbo.Product
WHERE Weight > @minWeight
END
!!!
Mise en prod
Main
MAJ de la MAIN
Prod
ALTER PROCEDURE [dbo].[sp_getHeavyObjects]
AS
BEGIN
dbo.Product
END
@minWeight decimal(8,2)
SET NOCOUNT ON;
SELECT TOP(10) * FROM
WHERE Weight > @minWeight
ORDER BY Weight DESC
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)
POURQUOI CELA NE PEUT PAS
MARCHER COMME CELA
7
2 MODELES DE PROGRAMMATION
Déclarative
Impérative
• Tous les langages compilés
• Mise à jours par scripts à coups
d’ALTER…
• Pas d’état antérieur à gérer
• On compile et on remplace
• Le compilateur vérifie la
cohérence
• Il faut tenir compte de l’état
antérieur, des données
• Certaines validations au runtime
Il faut un modèle déclaratif
pour la base de données
INDUSTRIALISATION AVEC VS/TFS
2010
Présent
9
PROJETS « DATABASES »
DBA/QA/….
Equipe de dev
Développement
•
•
•
•
•
•
Syntaxe
Compilation
Intellisense
Refactoring
Historique
Debug
Validation
• Analyse de
code
• Tests
Livraison
• Comparaison
de code
• Déploiement
• Build
DEVELOPPEMENT
1
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.
• Database  Projet VS 2010
• Database  Database
• Projet VS 2010  Database
• Projet VS 2010  Projet VS 2010
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’ve got 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 / « Fully Qualified Names »
• Renommage de tables, colonnes, procs…: se base
sur l’analyse de dépendances à partir du schéma
DEMO
1
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 / Expected schema
• Définition de la « forme » des données attendues: schéma de la table,
checksum des données retournées
• Empty resultset
• Absence de données dans un Resultset
• Execution Time
• Limite dans la durée d’exécution de la requête
• Non Empty Resultset
• 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
DEMO
2
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
DEMO
2
SQL SERVER DATA TOOLS
« JUNEAU »
Le futur
2
SSDT= SSMS + VS 2010 + SQL
SERVER EXPRESS + DESIGNERS +…
2
INTRODUCING SQL SERVER DATA TOOLS
SSDT
SQL Server Database Project
SQL Server
Object Explorer
SQL Static Code
Analysis
Database
Publishing
SQL Language
Services
Buffered
Declarative
Editing
Table Designer
Schema
Comparison
Isolated Local
Database
Runtime
SQL/CLR
SQL Debugging
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.
DEMO
2
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.
QUESTIONS?
3
Merci à nos Sponsors
Rencontrez les dans l’espace partenaires
Téléchargement