Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Database project alla riscossa

809 views

Published on

Presentation done on SQL Start on 11/11/11 at Ancona. Sli

  • Be the first to comment

  • Be the first to like this

Database project alla riscossa

  1. 1. ANCONA, 11 NOVEMBRE 2011SQL START!
  2. 2. SQL START! ANCONA, 11 NOVEMBRE 2011Database Projects alla riscossa Ricci Gian Maria alkampfer@nablasoft.com
  3. 3. Sponsors
  4. 4. #sqlstart
  5. 5. Agenda• Le problematiche• Cosa è un Database Project• Deploy• Unit Testing• Refactoring e Code Analysis
  6. 6. Le Problematiche• Lo sviluppo di un database spesso segue procedure di ALM differenti rispetto al resto del progetto• Solitamente molte funzionalità che sono disponibili per il codice sono assenti per lo sviluppo del database
  7. 7. Le Problematiche
  8. 8. Database Project• I database project sono stati introdotti per superare questo gap• Un database project permette di «definire» la struttura di un database tramite file sorgente• Un DP può essere compilato, deployato e su di esso si possono scrivere unit tests
  9. 9. DEMOIntroduzione ai DB ProjectsCreazione e funzionalità base di un database project
  10. 10. SQL START!ANCONA, 11 NOVEMBRE 2011Introduciamo i Db ProjectsCreazione e funzionalità base di un database project
  11. 11. Se ho gia un progetto avviato?• La possibilità di importare la struttura di un database esistente garantisce l’introduzione dei DB Project su progetti esistenti• La possibilità di sincronizzazione permette inoltre di mixare lo sviluppo «tradizionale» all’uso dei DB Project
  12. 12. DEMO SincroniaGestire la sincronia tra un database reale ed un Db Project per Utilizzare in contemporanea un database condiviso ed un DB project
  13. 13. Come rilascio gli update del DB• Esistono strumenti che sincronizzano la struttura di due istanze di database• In questo modo possiamo generare script di upgrade da includere in un setup
  14. 14. Come rilascio update del DB?• Cosa accade se in produzione ho potenzialmente versioni differenti del database?• Cosa accade se qualcuno ha modificato il database? (non è infrequente come potete pensare  )
  15. 15. Come rilascio update del DB?• Compilando un database project viene prodotto un file .dbschema chiamato «database logico»• Esiste un tool redistribuibile che può sincronizzare un «database logico» con un database fisico
  16. 16. Come viene effettuato il deploy
  17. 17. Come rilascio update del DB?• Posso includere il «database logico» in uno script di setup e risolvere i problemi 
  18. 18. DEMODeploy del databaseCome risolvere le problematiche dideploy grazie ai Database Projects
  19. 19. Unit Testing• Stored procedures e funzioni dovrebbero essere coperte da Unit Testing• Grazie ad un DB Project possiamo automatizzare – Creazione di un db locale di test – Popolazione di dati di test – Unit test eseguibili da MsTest e quindi integrati nel ciclo di sviluppo
  20. 20. Dati di test• Affinche uno Unit Test sia ripetibile è necessario poter replicare i dati nel db• È possibile associare ad un DBProj uno o più Data Generation Plan• La generazione dei dati è automatica, rispetta le chiavi del database e permette flessibilità / ripetibilità sui dati generati.
  21. 21. DEMOData Generation Plan Gestire un database di test con dati autogenerati
  22. 22. Unit Testing• Si possono creare con pochi click unit test di stored procedure, trigger e funzioni• Visual Studio si occupa di generare il database di test, allinearlo ed eseguire la generazione dati
  23. 23. Unit Testing• Gli unit test di database sono scritti in T-SQL rispettando il paradigma per cui gli unit test dovrebbero essere scritti nello stesso linguaggio del codice• Internamente viene comunque generato un test standard che può comunque essere editato
  24. 24. Customizzazione Unit Test• È quindi possibile aggiungere funzionalità ai test del database semplicemente andando ad editare il file di «code behind»• Grazie a questo si possono aggiungere interessanti funzionalità, come i Data Driven Database test
  25. 25. Es. Unit Test Transazionali• È possibile ad esempio anche aggiungere una gestione delle transazioni
  26. 26. DEMO Unit Test Come creare unit test per lefunzionalità incluse in un database
  27. 27. Refactoring• Il refactoring è una procedura standard dello sviluppo agile• In un DB Project si hanno a disposizione dei refactoring sulla struttura – Rename – Move to schema – Expand wildcards
  28. 28. Analisi del codice• Analogamente ai progetti C# o di altri linguaggi è presente un analizzatore di codice• Tre distinte categorie: Naming, Performance e Design attivabili distintamente• Possibilità di scrivere Regole proprie per assicurare ad esempio le proprie naming conventions
  29. 29. DEMORefactoring + Code Analysis
  30. 30. Integrazione con Tfs Build• E’ possibile integrare il deploy del progetto DB in una team build. Es, progetto web.• In questo modo si automatizzano le procedure di deploy, sia nell’ambiente di test che in produzione
  31. 31. Integrazione con Tfs Build TFS Check In Aggiorna Web Sincronizza DB Build Server DB Test
  32. 32. Disponibilità nelle versioni di VS
  33. 33. Sql Server 2012 e Juneau• I database project verranno rimpiazzati dai Sql Server Developer Tools (code-name Juneau) – http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx – http://blogs.msdn.com/b/ssdt/archive/2010/11/08/welcome.aspx• Conversioni e compatibilità con gli attuali Database Project – http://msdn.microsoft.com/en-us/library/hh272689(v=vs.103).aspx• Informazioni sui nuovi Database Project – http://msdn.microsoft.com/en-us/library/hh272702(v=VS.103).aspx
  34. 34. Grazie!Non dimenticate di compilare i moduli di feedback. Commenta la sessione che hai appena seguito su Twitter #sqlstart

×