[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control

Alessandro Alpi
Alessandro AlpiCTO & CO-Founder at Engage IT Services
#sqlsatParma 
Database sotto source control 
Alessandro Alpi 
@suxstellino 
www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Sponsors 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Organizers 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Speaker 
 SQL Server MVP dal 2008 
 Microsoft Certified 
 blog: 
 [ITA] http://blogs.dotnethell.it/suxstellino 
 [ENG] http://suxstellino.wordpress.com/ 
 Maggiori informazioni su: 
 http://www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Agenda 
 Concetti ALM/DLM 
 Source control manager 
 Database vs Codice 
 Database ALM tools 
 Soluzioni per il development 
 Conclusioni 
 Q&A 
November 22 #sqlsat355 nd, 2014
Application Lifecycle Management (ALM) rappresenta 
l'unione di attività di gestione di business con attività di 
ingegneria del software, resa possibile dall'utilizzo di 
strumenti che facilitano la gestione delle fasi di: analisi 
dei requisiti, progetto architetturale, sviluppo, testing, 
gestione delle release, del change e del deployment. 
(fonte Wikipedia) 
#sqlsatParma 
Che cosa si intende con ALM? 
November 22 #sqlsat355 nd, 2014
 Rottura delle barriere tra i team (integrazione) 
 Rilascio di software di qualità 
 Rilascio di software in tempi brevi 
 Soddisfazione del cliente 
 Migliore organizzazione del lavoro 
 Monitorizzazione e tracciabilità delle attività 
 Migliore gestione del codice (più «pulito») 
#sqlsatParma 
Perchè ALM? 
November 22 #sqlsat355 nd, 2014
 La parte di database ha analisi e sviluppo 
 I database devono poter essere distribuiti 
 I database devono essere sincronizzati 
nell’ambiente di sviluppo 
 Il database avrà «cambiamenti» da associare 
ad «attività» 
 Il database dovrebbe essere testato 
 Di certo è una cosa di cui fare deploy  
#sqlsatParma 
ALM e database 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Per raggiungere la qualità.. 
 Continuous Integration! 
 SVILUPPO 
 SEND 
 BUILD 
 TEST 
November 22 #sqlsat355 nd, 2014
DLM – Database lifecycle management 
DLM (sottoinsieme di ALM) è un approccio alla 
gestione dello schema del database, dei dati e dei 
metadati. Ma non solo, è l’insieme degli strumenti 
e delle tecnologie che consentono l’organizzazione 
del ciclo di vita di un database, partendo 
dall’analisi, passando per lo sviluppo, il testing ed il 
deploy, per arrivare alla fase di backup e 
persistenza dei dati. 
(fonte TechNet) 
#sqlsatParma 
November 22 #sqlsat355 nd, 2014
 E dei cambiamenti del nostro codice (e non solo) 
 Entità condivisa nelle fasi di sviluppo, deploy 
e team management 
 Dotato di interfaccia (anche grafica) 
#sqlsatParma 
Source Control Manager 
 Gestore delle versioni 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
SCM – Perchè li utilizziamo 
 Versioni del nostro codice 
 Salvataggio sicuro dei nostri file 
 Distribuzione delle linee di sviluppo al team 
 Creazione di un punto centrale per i deploy 
 Automatizzare processi di build e di test 
 Le necessità di ogni team.. 
November 22 #sqlsat355 nd, 2014
 Il DB può essere un file «nell’applicazione» 
 Il DB «sta su server» 
 Il DB persiste dati utente 
 Il DB non è tutto e solo codice 
 Tuttavia i cambiamenti al DB devono riflettersi a 
Il source control potrebbe sembrare «scomodo» 
#sqlsatParma 
SCM – Parlando di database 
tutto il team 
November 22 #sqlsat355 nd, 2014
 Come potremmo semplicemente gestire le fix? 
 Come prevenire regressioni? 
 Come avere velocemente più ambienti di sviluppo? 
 Come creare semplicemente una nuova linea dev? 
 Come utilizzare versioni differenti dello stesso DB? 
 Come potremmo rendere il DB sincronizzato agli 
#sqlsatParma 
Ma senza un SCM 
ultimi cambiamenti dell’applicazione? 
November 22 #sqlsat355 nd, 2014
 Il database è comunque codice 
(programmabilità, ddl, grant, ecc.) 
 Le tabelle di «dominio» sono come tanti 
enum (dati statici) 
 Anche il DB dovrebbe essere trasformato 
in più line di sviluppo durante le operazioni 
di branch del codice 
#sqlsatParma 
DB vs. codice – così diversi? 
November 22 #sqlsat355 nd, 2014
 I puntamenti ai linked server sono 
configurazioni (come l’app.config) 
 Le server login sono configurazioni di 
ambiente 
 Il database persiste i dati utente. Non è un 
problema *da source control* 
#sqlsatParma 
DB vs. codice – così diversi? 
November 22 #sqlsat355 nd, 2014
 Versioni dei nostri oggetti (DDL) e della 
programmabilità su database 
 Le label comprendono il database, in 
modo da poter tornare ad una situazione 
precedente 
 Team sincronizzati sulla get di una 
versione (tipicamente l’ultima) 
 Per fare versioning anche dei dati statici 
#sqlsatParma 
Perché mettere il DB sotto SCM 
November 22 #sqlsat355 nd, 2014
 Continuous Integration 
 Branch (più linee di sviluppo e più contesti) 
 Ambienti isolati per team dislocati 
 Atomicità tra applicazione e DB 
 Salvataggio della documentazione del 
database 
#sqlsatParma 
E ancora.. 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
SCM – Eccone alcuni 
 TFS on-premises 
 Visual Studio Online 
 Git 
 Mercurial 
 Subversion (SVN) 
 CVS 
 … 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Operazioni possibili con SCM 
 Get 
 Commit/Checkin 
 Sync/Push/Pull/Fetch 
 Undo 
 Save (working folder/Git) 
 Delete (working folder/Git) 
 Edit (working folder/Git) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Tool per la gestione SCM per DB 
 Visual Studio 
 Database projects 
 Red-Gate Source Control 
 ApexSQL Source Control 
 … 
November 22 #sqlsat355 nd, 2014
Indipendentemente dal tool che si usa Team 
Explorer consente: 
 Migliore gestione dei changeset 
 Migliore associazione dei changeset ai task 
 Miglior controllo sulle fasi di commit e di 
review 
 Gestione centralizzata delle policy di checkin 
 Single point per la gestione del team project 
#sqlsatParma 
Il Team Explorer 
November 22 #sqlsat355 nd, 2014
Soluzioni e tool – development/change 
 Management Studio non basta 
 Visual Studio e Database projects 
 Integrazioni di tool di terze parti con SSMS 
 Software di terze parti non integrati con IDE 
proprietari 
 Li vedremo più avanti.. 
#sqlsatParma 
(esempio: Red-Gate SQL Source Control) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Visual Studio + Database projects 
 Connected database development 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Visual Studio + Database projects 
 Project based development 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 Integrazione con SQL Server Management Studio 
#sqlsatParma 
Red-Gate SQL Source Control 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Red-Gate SQL Source Control 
 Modello di sviluppo condiviso 
 Modello di sviluppo dedicato (consigliato) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 Integrazione con SQL Server Management Studio 
#sqlsatParma 
ApexSQL Source Control 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
ApexSQL Source Control 
 Modello di sviluppo condiviso 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 La merge necessita di tool di terze parti 
 Non ha la gestione dei dati statici (ma è prevista per prossime release) 
#sqlsatParma 
Comparazione – ApexSQL 
 Vantaggi 
 Basso costo 
 UI efficace 
 Molti tipi di source control supportati 
 Integrazione veloce con SSMS 
 Molto rapido come tempi di risposta 
 Supporto qualificato 
 Svantaggi 
 Prodotto molto giovane (release recente/rifacimento prodotto 
precedente) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – Red-Gate 
 Vantaggi 
 UI efficace 
 Molti tipi di source control supportati 
 Integrazione veloce con SSMS 
 Automazione dei processi e linee di comando 
 Salvataggio dei dati statici 
 Migrazioni facilitate con refactor integrati 
 Creazione di script e integrazione con altri prodotti Red-Gate (CI) 
 Supporto qualificato 
 Svantaggi 
 Costo non molto basso 
 Nelle prossime release, prodotto molto giovane 
 Nell’attuale release la migrazione non supporta il branching nelle 
migrazioni 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – Visual Studio 
 Vantaggi 
 Nessun costo aggiuntivo (dipende dalla licenza) 
 Prodotto usato già dagli sviluppatori 
 Estendibile (nuget) 
 Ha il Team Explorer 
 È estremamente potente 
 Integra anche progetti di BI (SSIS, SSAS, SSRS) 
 Tipi di progetto e template cross versione 
 Deploy e strumenti di refactor integrati 
 Svantaggi 
 Solo due source control supportati (VSO/TFS e Git) 
 Non ha la gestione dei dati statici 
November 22 #sqlsat355 nd, 2014
 Com’è il nostro team? 
 Requisiti minimi per la scelta del source control tool? 
 Quanto posso spendere? 
 Curva di apprendimento se cambio IDE? 
 In definitiva, il Source Control dovremmo usarlo  
#sqlsatParma 
Conclusioni 
 Altre considerazioni per la scelta 
November 22 #sqlsat355 nd, 2014
 http://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html 
 http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx 
 http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx 
 http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts. 
 http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures- 
 http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-and-merging. 
 http://www.red-gate.com/products/sql-development/sql-source-control/ 
 http://apexsql.com/sql_tools_source_control.aspx 
 http://it.wikipedia.org/wiki/Application_lifecycle_management 
 http://www.getlatestversion.it/ (ALM italian community) 
 http://suxstellino.wordpress.com/tag/alm/ 
 http://blogs.dotnethell.it/suxstellino/Category_2927.aspx 
 http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project. 
#sqlsatParma 
Resources 
aspx 
and-the-like.aspx 
aspx 
aspx 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Q&A 
 Domande? 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
THANKS! 
#sqlsatParma 
#sqlsat355 
November 22 #sqlsat355 nd, 2014
1 of 39

Recommended

[ITA] SQL Saturday 257 - Put databases under source control by
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source controlAlessandro Alpi
1.2K views34 slides
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds by
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgroundsAlessandro Alpi
787 views40 slides
Gordonas sausio by
Gordonas sausioGordonas sausio
Gordonas sausioErika Bražienė
483 views27 slides
Acting In The Digital Age Workshop @UMFF by
Acting In The Digital Age Workshop @UMFFActing In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFFRosalyn Coleman Williams
2K views21 slides
Quick intro sul Source Control su SQL Server by
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerAlessandro Alpi
260 views17 slides
Lista 5 by
Lista 5Lista 5
Lista 5Gerson Coppes
278 views7 slides

More Related Content

Viewers also liked

[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont... by
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...Alessandro Alpi
747 views39 slides
Slide sharing by
Slide sharingSlide sharing
Slide sharingalexandersaa2013
341 views4 slides
DotNetCampus - Continuous Integration con Sql Server by
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
524 views35 slides
#DOAW16 - DevOps@work Roma 2016 - Databases under source control by
#DOAW16 - DevOps@work Roma 2016 - Databases under source control#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source controlAlessandro Alpi
853 views29 slides
PASS Virtual Chapter - SQL Server Continuous Deployment by
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentAlessandro Alpi
199 views14 slides
PASS Virtual Chapter - Unit Testing su SQL Server by
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
444 views19 slides

Viewers also liked(16)

[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont... by Alessandro Alpi
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
Alessandro Alpi747 views
DotNetCampus - Continuous Integration con Sql Server by Alessandro Alpi
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi524 views
#DOAW16 - DevOps@work Roma 2016 - Databases under source control by Alessandro Alpi
#DOAW16 - DevOps@work Roma 2016 - Databases under source control#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
Alessandro Alpi853 views
PASS Virtual Chapter - SQL Server Continuous Deployment by Alessandro Alpi
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous Deployment
Alessandro Alpi199 views
PASS Virtual Chapter - Unit Testing su SQL Server by Alessandro Alpi
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
Alessandro Alpi444 views
Oraciones simples con solucionario (ppt) by CastilloAguilera
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
CastilloAguilera1.6K views
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua... by Alessandro Alpi
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
Alessandro Alpi357 views
PASS Virtual Chapter - SQL Server Continuous Integration by Alessandro Alpi
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
Alessandro Alpi198 views
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support by Alessandro Alpi
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
Alessandro Alpi627 views
#DOAW16 - DevOps@work Roma 2016 - Testing your databases by Alessandro Alpi
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
Alessandro Alpi440 views

Similar to [ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control

Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server by
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerAlessandro Alpi
48 views21 slides
Database under source control by
Database under source controlDatabase under source control
Database under source controlKlab
620 views17 slides
Entity Framework 7, Back To The Future! by
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Michael Denny
661 views25 slides
Database Project in Visual Studio 2010 by
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
1.5K views47 slides
Microsoft Fast - Overview by
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - OverviewFrancesco Sciuti
466 views46 slides
Confio Ignite - webinar by Matteo Durighetto by
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoMiriade Spa
454 views19 slides

Similar to [ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control(20)

Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server by Alessandro Alpi
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Alessandro Alpi48 views
Database under source control by Klab
Database under source controlDatabase under source control
Database under source control
Klab620 views
Entity Framework 7, Back To The Future! by Michael Denny
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
Michael Denny661 views
Database Project in Visual Studio 2010 by Gian Maria Ricci
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
Gian Maria Ricci1.5K views
Confio Ignite - webinar by Matteo Durighetto by Miriade Spa
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo Durighetto
Miriade Spa454 views
2014.11.14 Implementare e mantenere un progetto Azure SQL Database by Emanuele Zanchettin
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
SQL Server Benchmarking, Baselining and Workload Analysis by Gianluca Sartori
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
Gianluca Sartori885 views
Design Patterns - enterprise patterns (part I) by Fabio Armani
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
Fabio Armani3.2K views
Progettare e sviluppare soluzioni serverless con AWS by sparkfabrik
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWS
sparkfabrik54 views
2014.11.14 Implementare e mantenere un progetto Azure SQL Database by Emanuele Zanchettin
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
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure by Davide Benvegnù
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
Davide Benvegnù397 views
Webcast - Introduzione a Visual Studio Online by Davide Benvegnù
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
Davide Benvegnù454 views
Modernize Legacy Systems with Kubernetes by Giulio Roggero
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
Giulio Roggero274 views
CONTINUOUS INTEGRATION CON SQL SERVER by DotNetCampus
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus294 views
Alm pills - Sessione community tour Dot Net Umbria 2011 by Gian Maria Ricci
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
Gian Maria Ricci334 views
Code quality e test automatizzati con JavaScript by Roberto Messora
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
Roberto Messora621 views
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2 by MongoDB
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB466 views

More from Alessandro Alpi

Mvp4 croatia - Being a dba in a devops world by
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldAlessandro Alpi
48 views19 slides
Digital warriors 2020 - Smart? by
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Alessandro Alpi
34 views16 slides
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers by
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Alessandro Alpi
62 views30 slides
Sql Wars - SQL Clone vs Docker Containers by
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Alessandro Alpi
318 views24 slides
Wpc2019 - Distruggere DevOps, la storia di un vero team by
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
55 views43 slides
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server by
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerAlessandro Alpi
305 views23 slides

More from Alessandro Alpi(12)

Mvp4 croatia - Being a dba in a devops world by Alessandro Alpi
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops world
Alessandro Alpi48 views
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers by Alessandro Alpi
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Alessandro Alpi62 views
Sql Wars - SQL Clone vs Docker Containers by Alessandro Alpi
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers
Alessandro Alpi318 views
Wpc2019 - Distruggere DevOps, la storia di un vero team by Alessandro Alpi
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero team
Alessandro Alpi55 views
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server by Alessandro Alpi
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Alessandro Alpi305 views
Configuration e change management con Disciplined Agile Framework by Alessandro Alpi
Configuration e change management con Disciplined Agile FrameworkConfiguration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile Framework
Alessandro Alpi90 views
Basta poco per distruggere DevOps by Alessandro Alpi
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOps
Alessandro Alpi258 views
Automatizzare il processo di link dei database con redgate source control by Alessandro Alpi
Automatizzare il processo di link dei database con redgate source controlAutomatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source control
Alessandro Alpi70 views
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB by Alessandro Alpi
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBSql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Alessandro Alpi87 views
Sql Saturday a Pordenone - Sql Server journey, da dev a ops by Alessandro Alpi
Sql Saturday a Pordenone - Sql Server journey, da dev a opsSql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
Alessandro Alpi94 views
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support by Alessandro Alpi
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
Alessandro Alpi691 views

[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control

  • 1. #sqlsatParma Database sotto source control Alessandro Alpi @suxstellino www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 2. #sqlsatParma Sponsors November 22 #sqlsat355 nd, 2014
  • 3. #sqlsatParma Organizers November 22 #sqlsat355 nd, 2014
  • 4. #sqlsatParma Speaker  SQL Server MVP dal 2008  Microsoft Certified  blog:  [ITA] http://blogs.dotnethell.it/suxstellino  [ENG] http://suxstellino.wordpress.com/  Maggiori informazioni su:  http://www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 5. #sqlsatParma Agenda  Concetti ALM/DLM  Source control manager  Database vs Codice  Database ALM tools  Soluzioni per il development  Conclusioni  Q&A November 22 #sqlsat355 nd, 2014
  • 6. Application Lifecycle Management (ALM) rappresenta l'unione di attività di gestione di business con attività di ingegneria del software, resa possibile dall'utilizzo di strumenti che facilitano la gestione delle fasi di: analisi dei requisiti, progetto architetturale, sviluppo, testing, gestione delle release, del change e del deployment. (fonte Wikipedia) #sqlsatParma Che cosa si intende con ALM? November 22 #sqlsat355 nd, 2014
  • 7.  Rottura delle barriere tra i team (integrazione)  Rilascio di software di qualità  Rilascio di software in tempi brevi  Soddisfazione del cliente  Migliore organizzazione del lavoro  Monitorizzazione e tracciabilità delle attività  Migliore gestione del codice (più «pulito») #sqlsatParma Perchè ALM? November 22 #sqlsat355 nd, 2014
  • 8.  La parte di database ha analisi e sviluppo  I database devono poter essere distribuiti  I database devono essere sincronizzati nell’ambiente di sviluppo  Il database avrà «cambiamenti» da associare ad «attività»  Il database dovrebbe essere testato  Di certo è una cosa di cui fare deploy  #sqlsatParma ALM e database November 22 #sqlsat355 nd, 2014
  • 9. #sqlsatParma Per raggiungere la qualità..  Continuous Integration!  SVILUPPO  SEND  BUILD  TEST November 22 #sqlsat355 nd, 2014
  • 10. DLM – Database lifecycle management DLM (sottoinsieme di ALM) è un approccio alla gestione dello schema del database, dei dati e dei metadati. Ma non solo, è l’insieme degli strumenti e delle tecnologie che consentono l’organizzazione del ciclo di vita di un database, partendo dall’analisi, passando per lo sviluppo, il testing ed il deploy, per arrivare alla fase di backup e persistenza dei dati. (fonte TechNet) #sqlsatParma November 22 #sqlsat355 nd, 2014
  • 11.  E dei cambiamenti del nostro codice (e non solo)  Entità condivisa nelle fasi di sviluppo, deploy e team management  Dotato di interfaccia (anche grafica) #sqlsatParma Source Control Manager  Gestore delle versioni November 22 #sqlsat355 nd, 2014
  • 12. #sqlsatParma SCM – Perchè li utilizziamo  Versioni del nostro codice  Salvataggio sicuro dei nostri file  Distribuzione delle linee di sviluppo al team  Creazione di un punto centrale per i deploy  Automatizzare processi di build e di test  Le necessità di ogni team.. November 22 #sqlsat355 nd, 2014
  • 13.  Il DB può essere un file «nell’applicazione»  Il DB «sta su server»  Il DB persiste dati utente  Il DB non è tutto e solo codice  Tuttavia i cambiamenti al DB devono riflettersi a Il source control potrebbe sembrare «scomodo» #sqlsatParma SCM – Parlando di database tutto il team November 22 #sqlsat355 nd, 2014
  • 14.  Come potremmo semplicemente gestire le fix?  Come prevenire regressioni?  Come avere velocemente più ambienti di sviluppo?  Come creare semplicemente una nuova linea dev?  Come utilizzare versioni differenti dello stesso DB?  Come potremmo rendere il DB sincronizzato agli #sqlsatParma Ma senza un SCM ultimi cambiamenti dell’applicazione? November 22 #sqlsat355 nd, 2014
  • 15.  Il database è comunque codice (programmabilità, ddl, grant, ecc.)  Le tabelle di «dominio» sono come tanti enum (dati statici)  Anche il DB dovrebbe essere trasformato in più line di sviluppo durante le operazioni di branch del codice #sqlsatParma DB vs. codice – così diversi? November 22 #sqlsat355 nd, 2014
  • 16.  I puntamenti ai linked server sono configurazioni (come l’app.config)  Le server login sono configurazioni di ambiente  Il database persiste i dati utente. Non è un problema *da source control* #sqlsatParma DB vs. codice – così diversi? November 22 #sqlsat355 nd, 2014
  • 17.  Versioni dei nostri oggetti (DDL) e della programmabilità su database  Le label comprendono il database, in modo da poter tornare ad una situazione precedente  Team sincronizzati sulla get di una versione (tipicamente l’ultima)  Per fare versioning anche dei dati statici #sqlsatParma Perché mettere il DB sotto SCM November 22 #sqlsat355 nd, 2014
  • 18.  Continuous Integration  Branch (più linee di sviluppo e più contesti)  Ambienti isolati per team dislocati  Atomicità tra applicazione e DB  Salvataggio della documentazione del database #sqlsatParma E ancora.. November 22 #sqlsat355 nd, 2014
  • 19. #sqlsatParma SCM – Eccone alcuni  TFS on-premises  Visual Studio Online  Git  Mercurial  Subversion (SVN)  CVS  … November 22 #sqlsat355 nd, 2014
  • 20. #sqlsatParma Operazioni possibili con SCM  Get  Commit/Checkin  Sync/Push/Pull/Fetch  Undo  Save (working folder/Git)  Delete (working folder/Git)  Edit (working folder/Git) November 22 #sqlsat355 nd, 2014
  • 21. #sqlsatParma Tool per la gestione SCM per DB  Visual Studio  Database projects  Red-Gate Source Control  ApexSQL Source Control  … November 22 #sqlsat355 nd, 2014
  • 22. Indipendentemente dal tool che si usa Team Explorer consente:  Migliore gestione dei changeset  Migliore associazione dei changeset ai task  Miglior controllo sulle fasi di commit e di review  Gestione centralizzata delle policy di checkin  Single point per la gestione del team project #sqlsatParma Il Team Explorer November 22 #sqlsat355 nd, 2014
  • 23. Soluzioni e tool – development/change  Management Studio non basta  Visual Studio e Database projects  Integrazioni di tool di terze parti con SSMS  Software di terze parti non integrati con IDE proprietari  Li vedremo più avanti.. #sqlsatParma (esempio: Red-Gate SQL Source Control) November 22 #sqlsat355 nd, 2014
  • 24. #sqlsatParma Visual Studio + Database projects  Connected database development November 22 #sqlsat355 nd, 2014
  • 25. #sqlsatParma Visual Studio + Database projects  Project based development November 22 #sqlsat355 nd, 2014
  • 26. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 27.  Integrazione con SQL Server Management Studio #sqlsatParma Red-Gate SQL Source Control November 22 #sqlsat355 nd, 2014
  • 28. #sqlsatParma Red-Gate SQL Source Control  Modello di sviluppo condiviso  Modello di sviluppo dedicato (consigliato) November 22 #sqlsat355 nd, 2014
  • 29. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 30.  Integrazione con SQL Server Management Studio #sqlsatParma ApexSQL Source Control November 22 #sqlsat355 nd, 2014
  • 31. #sqlsatParma ApexSQL Source Control  Modello di sviluppo condiviso November 22 #sqlsat355 nd, 2014
  • 32. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 33.  La merge necessita di tool di terze parti  Non ha la gestione dei dati statici (ma è prevista per prossime release) #sqlsatParma Comparazione – ApexSQL  Vantaggi  Basso costo  UI efficace  Molti tipi di source control supportati  Integrazione veloce con SSMS  Molto rapido come tempi di risposta  Supporto qualificato  Svantaggi  Prodotto molto giovane (release recente/rifacimento prodotto precedente) November 22 #sqlsat355 nd, 2014
  • 34. #sqlsatParma Comparazione – Red-Gate  Vantaggi  UI efficace  Molti tipi di source control supportati  Integrazione veloce con SSMS  Automazione dei processi e linee di comando  Salvataggio dei dati statici  Migrazioni facilitate con refactor integrati  Creazione di script e integrazione con altri prodotti Red-Gate (CI)  Supporto qualificato  Svantaggi  Costo non molto basso  Nelle prossime release, prodotto molto giovane  Nell’attuale release la migrazione non supporta il branching nelle migrazioni November 22 #sqlsat355 nd, 2014
  • 35. #sqlsatParma Comparazione – Visual Studio  Vantaggi  Nessun costo aggiuntivo (dipende dalla licenza)  Prodotto usato già dagli sviluppatori  Estendibile (nuget)  Ha il Team Explorer  È estremamente potente  Integra anche progetti di BI (SSIS, SSAS, SSRS)  Tipi di progetto e template cross versione  Deploy e strumenti di refactor integrati  Svantaggi  Solo due source control supportati (VSO/TFS e Git)  Non ha la gestione dei dati statici November 22 #sqlsat355 nd, 2014
  • 36.  Com’è il nostro team?  Requisiti minimi per la scelta del source control tool?  Quanto posso spendere?  Curva di apprendimento se cambio IDE?  In definitiva, il Source Control dovremmo usarlo  #sqlsatParma Conclusioni  Altre considerazioni per la scelta November 22 #sqlsat355 nd, 2014
  • 37.  http://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html  http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx  http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx  http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts.  http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-  http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-and-merging.  http://www.red-gate.com/products/sql-development/sql-source-control/  http://apexsql.com/sql_tools_source_control.aspx  http://it.wikipedia.org/wiki/Application_lifecycle_management  http://www.getlatestversion.it/ (ALM italian community)  http://suxstellino.wordpress.com/tag/alm/  http://blogs.dotnethell.it/suxstellino/Category_2927.aspx  http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project. #sqlsatParma Resources aspx and-the-like.aspx aspx aspx November 22 #sqlsat355 nd, 2014
  • 38. #sqlsatParma Q&A  Domande? November 22 #sqlsat355 nd, 2014
  • 39. #sqlsatParma THANKS! #sqlsatParma #sqlsat355 November 22 #sqlsat355 nd, 2014