SlideShare a Scribd company logo
1 of 34
ANCONA, 11 NOVEMBRE 2011




SQL START!
SQL START!
          ANCONA, 11 NOVEMBRE 2011




Database Projects alla riscossa

         Ricci Gian Maria
        alkampfer@nablasoft.com
Sponsors
#sqlstart
Agenda
•   Le problematiche
•   Cosa è un Database Project
•   Deploy
•   Unit Testing
•   Refactoring e Code Analysis
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
Le Problematiche
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
DEMO
Introduzione ai DB
     Projects
Creazione e funzionalità base di un
        database project
SQL START!ANCONA, 11 NOVEMBRE 2011




Introduciamo i Db Projects

Creazione e funzionalità base di un
        database project
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
DEMO
            Sincronia
Gestire la sincronia tra un database reale
   ed un Db Project per Utilizzare in
 contemporanea un database condiviso
             ed un DB project
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
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  )
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
Come viene effettuato il deploy
Come rilascio update del DB?

• Posso includere il «database logico» in uno
  script di setup e risolvere i problemi 
DEMO
Deploy del database
Come risolvere le problematiche di
deploy grazie ai Database Projects
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
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.
DEMO
Data Generation Plan
 Gestire un database di test con dati
            autogenerati
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
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
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
Es. Unit Test Transazionali
• È possibile ad esempio anche aggiungere una
  gestione delle transazioni
DEMO
         Unit Test
   Come creare unit test per le
funzionalità incluse in un database
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
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
DEMO
Refactoring + Code
     Analysis
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
Integrazione con Tfs Build

                            TFS

  Check In                        Aggiorna Web




                                  Sincronizza DB



             Build Server                          DB Test
Disponibilità nelle versioni di VS
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
Grazie!
Non dimenticate di compilare
    i moduli di feedback.
     Commenta la sessione che hai
       appena seguito su Twitter
               #sqlstart

More Related Content

Viewers also liked

Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...
Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...
Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...GoWireless
 
Epic fail datacenter
Epic fail datacenterEpic fail datacenter
Epic fail datacenterAdriano Rando
 
Presentazione Coud Backup
Presentazione Coud BackupPresentazione Coud Backup
Presentazione Coud Backupseeweb
 
Distribuzione Upi Ed Architetture
Distribuzione Upi Ed ArchitettureDistribuzione Upi Ed Architetture
Distribuzione Upi Ed Architetturebedosella
 
Roberto Ghislandi - Web Marketing e Web2.0
Roberto Ghislandi - Web Marketing e Web2.0Roberto Ghislandi - Web Marketing e Web2.0
Roberto Ghislandi - Web Marketing e Web2.0Better Software
 
NOSQL: il rinascimento dei database?
NOSQL: il rinascimento dei database?NOSQL: il rinascimento dei database?
NOSQL: il rinascimento dei database?Paolo Bernardi
 
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution... Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...festival ICT 2016
 
Presentazione del libro Wikicrazia a Bookique (Trento)
Presentazione del libro Wikicrazia a Bookique (Trento)Presentazione del libro Wikicrazia a Bookique (Trento)
Presentazione del libro Wikicrazia a Bookique (Trento)Massimo Carnevali
 
Convegno Cloud Computing Summit - Milano 15/11/11
Convegno Cloud Computing Summit - Milano 15/11/11Convegno Cloud Computing Summit - Milano 15/11/11
Convegno Cloud Computing Summit - Milano 15/11/11Massimo Carnevali
 
Cloud computing e data center cenni sulle tecnologie orientate al green
Cloud computing e data center cenni sulle tecnologie orientate al green Cloud computing e data center cenni sulle tecnologie orientate al green
Cloud computing e data center cenni sulle tecnologie orientate al green VMEngine
 
IBM per la sicurezza del Datacenter
IBM per la sicurezza del DatacenterIBM per la sicurezza del Datacenter
IBM per la sicurezza del DatacenterAnna Landolfi
 
Presentazione Greenways: Boschi e Fiumi della Repubblica di Venezia
Presentazione Greenways: Boschi e Fiumi della Repubblica di VeneziaPresentazione Greenways: Boschi e Fiumi della Repubblica di Venezia
Presentazione Greenways: Boschi e Fiumi della Repubblica di VeneziaNet.Ex Srl
 
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...Maticmind
 
Presentación Cercles 2012 Managing Technological Change
Presentación Cercles 2012 Managing Technological ChangePresentación Cercles 2012 Managing Technological Change
Presentación Cercles 2012 Managing Technological ChangeUAB Idiomes Barcelona
 
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...Aruba S.p.A.
 
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...IDC Italy
 

Viewers also liked (19)

Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...
Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...
Disciplinare GREEN-IT – Un’opportunità Un’opportunitàdi certificazione dei da...
 
Epic fail datacenter
Epic fail datacenterEpic fail datacenter
Epic fail datacenter
 
Presentazione Coud Backup
Presentazione Coud BackupPresentazione Coud Backup
Presentazione Coud Backup
 
Distribuzione Upi Ed Architetture
Distribuzione Upi Ed ArchitettureDistribuzione Upi Ed Architetture
Distribuzione Upi Ed Architetture
 
Roberto Ghislandi - Web Marketing e Web2.0
Roberto Ghislandi - Web Marketing e Web2.0Roberto Ghislandi - Web Marketing e Web2.0
Roberto Ghislandi - Web Marketing e Web2.0
 
NOSQL: il rinascimento dei database?
NOSQL: il rinascimento dei database?NOSQL: il rinascimento dei database?
NOSQL: il rinascimento dei database?
 
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution... Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 
Presentazione del libro Wikicrazia a Bookique (Trento)
Presentazione del libro Wikicrazia a Bookique (Trento)Presentazione del libro Wikicrazia a Bookique (Trento)
Presentazione del libro Wikicrazia a Bookique (Trento)
 
Convegno Cloud Computing Summit - Milano 15/11/11
Convegno Cloud Computing Summit - Milano 15/11/11Convegno Cloud Computing Summit - Milano 15/11/11
Convegno Cloud Computing Summit - Milano 15/11/11
 
Cloud computing e data center cenni sulle tecnologie orientate al green
Cloud computing e data center cenni sulle tecnologie orientate al green Cloud computing e data center cenni sulle tecnologie orientate al green
Cloud computing e data center cenni sulle tecnologie orientate al green
 
Fpa 2016 cardinale ciccotti
Fpa 2016    cardinale ciccottiFpa 2016    cardinale ciccotti
Fpa 2016 cardinale ciccotti
 
High density deployments using weblogic multitenancy
High density deployments using weblogic multitenancyHigh density deployments using weblogic multitenancy
High density deployments using weblogic multitenancy
 
Datacenter Tier Cheat Sheet
Datacenter Tier Cheat Sheet Datacenter Tier Cheat Sheet
Datacenter Tier Cheat Sheet
 
IBM per la sicurezza del Datacenter
IBM per la sicurezza del DatacenterIBM per la sicurezza del Datacenter
IBM per la sicurezza del Datacenter
 
Presentazione Greenways: Boschi e Fiumi della Repubblica di Venezia
Presentazione Greenways: Boschi e Fiumi della Repubblica di VeneziaPresentazione Greenways: Boschi e Fiumi della Repubblica di Venezia
Presentazione Greenways: Boschi e Fiumi della Repubblica di Venezia
 
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...
Cisco Unified Computing System: soluzione creata per la virtualizzazione e il...
 
Presentación Cercles 2012 Managing Technological Change
Presentación Cercles 2012 Managing Technological ChangePresentación Cercles 2012 Managing Technological Change
Presentación Cercles 2012 Managing Technological Change
 
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...
Workshop 'Scegliere Aruba Cloud per la tua infrastruttura IT: novità e live d...
 
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...
L'IT che vedevamo, l'IT che vedremo: i servizi data center nell'era delle riv...
 

Similar to Database project alla riscossa

Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-serviceMarco Pozzan
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azureDotNetCampus
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBDavide Benvegnù
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & AnalyticsDavide Mauri
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)Giorgio Di Nardo
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseMarco Pozzan
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionPomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionDomusDotNet
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
 

Similar to Database project alla riscossa (20)

Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Data flow
Data flowData flow
Data flow
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDB
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & Analytics
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Power bi
Power biPower bi
Power bi
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionPomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 

More from Gian Maria Ricci

Se non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoSe non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoGian Maria Ricci
 
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGian Maria Ricci
 
Migrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitMigrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitGian Maria Ricci
 
Real World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsReal World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsGian Maria Ricci
 
Gestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGian Maria Ricci
 
Build and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesBuild and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesGian Maria Ricci
 
Azure Pipeline in salsa yaml
Azure Pipeline in salsa yamlAzure Pipeline in salsa yaml
Azure Pipeline in salsa yamlGian Maria Ricci
 
Git gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGit gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGian Maria Ricci
 
Distribute your code with NUget and build vNext
Distribute your code with NUget and build vNextDistribute your code with NUget and build vNext
Distribute your code with NUget and build vNextGian Maria Ricci
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSCGian Maria Ricci
 
Introduction to Application insights
Introduction to Application insightsIntroduction to Application insights
Introduction to Application insightsGian Maria Ricci
 
Deploy applications with TFS Build
Deploy applications with TFS BuildDeploy applications with TFS Build
Deploy applications with TFS BuildGian Maria Ricci
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source controlGian Maria Ricci
 
Introduction to Visual Studio Online
Introduction to Visual Studio OnlineIntroduction to Visual Studio Online
Introduction to Visual Studio OnlineGian Maria Ricci
 
Come Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectCome Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectGian Maria Ricci
 

More from Gian Maria Ricci (20)

Se non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoSe non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorando
 
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
 
Migrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitMigrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a Git
 
Real World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsReal World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOps
 
Gestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devops
 
Build and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesBuild and release in code with azure devops pipelines
Build and release in code with azure devops pipelines
 
Azure Pipeline in salsa yaml
Azure Pipeline in salsa yamlAzure Pipeline in salsa yaml
Azure Pipeline in salsa yaml
 
Git gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGit gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teams
 
Distribute your code with NUget and build vNext
Distribute your code with NUget and build vNextDistribute your code with NUget and build vNext
Distribute your code with NUget and build vNext
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
 
Introduction to Application insights
Introduction to Application insightsIntroduction to Application insights
Introduction to Application insights
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Deploy applications with TFS Build
Deploy applications with TFS BuildDeploy applications with TFS Build
Deploy applications with TFS Build
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source control
 
Branch model in Git
Branch model in GitBranch model in Git
Branch model in Git
 
Introduction to Visual Studio Online
Introduction to Visual Studio OnlineIntroduction to Visual Studio Online
Introduction to Visual Studio Online
 
Git si o Git No
Git si o Git NoGit si o Git No
Git si o Git No
 
Testing
TestingTesting
Testing
 
Come Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectCome Organizzare il proprio Team Project
Come Organizzare il proprio Team Project
 
Git Perchè Usarlo
Git Perchè UsarloGit Perchè Usarlo
Git Perchè Usarlo
 

Database project alla riscossa

  • 1. ANCONA, 11 NOVEMBRE 2011 SQL START!
  • 2. SQL START! ANCONA, 11 NOVEMBRE 2011 Database Projects alla riscossa Ricci Gian Maria alkampfer@nablasoft.com
  • 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
  • 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. DEMO Introduzione ai DB Projects Creazione e funzionalità base di un database project
  • 10. SQL START!ANCONA, 11 NOVEMBRE 2011 Introduciamo i Db Projects Creazione 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 Sincronia Gestire 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
  • 17. Come rilascio update del DB? • Posso includere il «database logico» in uno script di setup e risolvere i problemi 
  • 18. DEMO Deploy del database Come risolvere le problematiche di deploy 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. DEMO Data 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 le funzionalità 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
  • 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
  • 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

Editor's Notes

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