Database project alla riscossa
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Database project alla riscossa

  • 817 views
Uploaded on

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

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
817
On Slideshare
817
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Per i data driven database test rimando a questo link del mio blog inglese. http://www.codewrecks.com/blog/index.php/2009/11/16/data-driven-test-of-a-stored-procedure-in-database-edition/
  • TabelleRename: Rinomina una tabella o colonnaMoveToSchema: Sposta una tabella in uno schema differenteFullyQualifyName: Qualifica in modo completo i nomi con il nome a tre parti databasename.schema.nameView (tutte quelle delle tabelle più)ExpandWildcards: Analizza una stored ed ogni volta che viene trovato il wildcard * in una selezione lo espande.Stored e funzioniRename: Rinomina una stored funzione o parametroMoveToSchema: Sposta una tabella in uno schema differenteExpandWildcards: Analizza una stored ed ogni volta che viene trovato il wildcard * in una selezione lo espande.FullyQualifyName: Qualifica in modo completo i nomi con il nome a tre parti databasename.schema.name

Transcript

  • 1. ANCONA, 11 NOVEMBRE 2011SQL START!
  • 2. SQL START! ANCONA, 11 NOVEMBRE 2011Database Projects alla riscossa Ricci Gian Maria alkampfer@nablasoft.com
  • 3. Sponsors
  • 4. #sqlstart
  • 5. Agenda• Le problematiche• Cosa è un Database Project• Deploy• Unit Testing• Refactoring e Code Analysis
  • 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. Le Problematiche
  • 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. DEMOIntroduzione ai DB ProjectsCreazione e funzionalità base di un database project
  • 10. SQL START!ANCONA, 11 NOVEMBRE 2011Introduciamo i Db ProjectsCreazione e funzionalità base di un database project
  • 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. DEMO SincroniaGestire la sincronia tra un database reale ed un Db Project per Utilizzare in contemporanea un database condiviso ed un DB project
  • 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. 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. 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. Come viene effettuato il deploy
  • 17. Come rilascio update del DB?• Posso includere il «database logico» in uno script di setup e risolvere i problemi 
  • 18. DEMODeploy del databaseCome risolvere le problematiche dideploy grazie ai Database Projects
  • 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. 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. DEMOData Generation Plan Gestire un database di test con dati autogenerati
  • 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. 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. 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. Es. Unit Test Transazionali• È possibile ad esempio anche aggiungere una gestione delle transazioni
  • 26. DEMO Unit Test Come creare unit test per lefunzionalità incluse in un database
  • 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. 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. DEMORefactoring + Code Analysis
  • 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. Integrazione con Tfs Build TFS Check In Aggiorna Web Sincronizza DB Build Server DB Test
  • 32. Disponibilità nelle versioni di VS
  • 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. Grazie!Non dimenticate di compilare i moduli di feedback. Commenta la sessione che hai appena seguito su Twitter #sqlstart