Anche quando frequentavo ingegneria mi sono sempre trovato meglio con gli eserciziari piuttosto che con i classici grossi manuali teorici. Se poi l’eserciziario, oltre alla soluzione, riportava anche un sintetica spiegazione teorica, basta, diventava il mio unico punto di riferimento.
Lo stesso vale per questo non piccolo testo sul T-SQL 2008, scritto da un personaggio piuttosto attendibile, tale Joseph Sack che è Dedicated Support Engineer nel Premier Field Engineering Team su SQL Server in Microsoft Corporation.
Non è innazitutto un libro per principianti: l’autore presuppone che chi legge è uno sviluppatore o DBA SQL Server da almeno un annetto. Conosce le basi e vuole approfondirle, sia per quanto riguarda il ramo “Sviluppo” che il ramo “Amministrazione”. Vengono affrontati, infatti, anche argomenti semi-sistemistici, quali possono essere il backup, il mirroring, i linked server e le performance.
Non si fa uso di immagini o screenshot, tant’è che in oltre 800 pagine non c’è uno solo di questi. Tutto è basato sul puro codice T-SQL, tra l’altro indentato ottimamente.
Viene prima presentato un problema o una necessità. L’autore propone quindi la soluzione, e nei paragrafi “How it works” viene dettagliatamente spiegato come mai si è scelto di seguire questa strada, il tutto condito con parecchi consigli in stile “best practice”, che aumentano incommensurabilmente il valore del libro.
La lunghezza dei capitoli è molto varia. Si passa dalle sole 5 pagine del capitolo 21 (“Configuring and Viewing SQL Server Options”) alle oltre 60 del primo capitolo dedicato alla Select, il più lungo di tutto il libro.
Per farsi un’idea dello stile dell’autore (un inglese molto comprensibile anche dai non madrelingua) consiglio di andare sul sito della Apress dove è possibile scaricare il sommario dettagliato e soprattutto il Capitolo 2 (“Perform, Capture, and Track Data Modifications”) modificato con le correzioni apportate dopo la pubblicazione del libro (53 pagine in tutto).
Purtroppo, infatti, subito dopo la pubblicazione del libro, è stato necessario (a quanto pare) riscrivere completamente questo importante capitolo.
Giusto per curiosità, e per capire il motivo di tale completa riscrittura, ho provato a scaricarmelo e a controllare, a campione, alcuni paragrafi qua e là. Stranamente non ho trovato differenze. Ho provato a contattare allora la Apress per chiedere lumi su questa situazione. Mi hanno risposto che sono state apportate leggere modifiche al codice degli esempi, ed hanno preferito ristamparlo completamente piuttosto che redigere una lunghissima pagina di errata che intaccasse ogni singola riga di codice. Non essendo stato molto contento di questa spiegazione, ho contattato pure l’autore del libro, Joseph Sack, il quale (gentilmente) mi ha mandato il link di una pagina del suo blog dove sono riportate le effettive variazioni, con tanto di numero di pagina:
http://joesack.com/WordPress/?page_id=134
Da quanto è riportato si sono verificate delle lievi differenze nell’istruzione “Merge” e in una stored procedure di sistema, questo tra le versioni Community Technical Preview 6 e la RTM (quella finale) di SQL Server 2008. La versione corretta del capitolo 2 sarà resa disponibile in eventuali ristampe del libro.
Comunque sia, è pur sempre un bel regalo. Anche se non si ha intenzione di comprare il libro, consiglio sicuramente di scaricarsi il pdf e stamparselo a mo’ di bigino, tant’è che è bello vasto e su argomenti di primaria importanza.
Il file del codice sorgente è piccolo, circa 70 kB, ed una volta scompresso crea una cartella di 29 file Notepad ognuno chiamato “Chapter_XX” (uno per capitolo quindi).
Tutto ciò molto comodo: si fa davvero alla svelta a risalire allo snippet di codice che serve. Ogni pezzetto di query è poi preceduto da un breve commento circa il suo utilizzo.
L’impaginazione e il layout sono quelli classici della Apress, molto sobri ed ordinati, ed anche la rilegatura, malgrado il consistente numero di pagine, risulta comoda ed efficace.
Per chi deve imparare, consiglio di procedere sequenzialmente, capitolo dopo capitolo, dato che si segue un certa ordine legato alla complessità degli argomenti trattati.
Per chi deve solo approfondire, si sfoglia il sommario e si sceglie il capitolo a cui si è interessati.
Assicuro che non si resterà delusi: qualcosa di nuovo da imparare lo troverà anche chi utilizza SQL Server ormai da anni.
Consiglio infine di dare un’occhiata anche al blog dell’autore: http://blogs.msdn.com/joesack/
dove ci sono parecchi post interessanti sul mondo SQL Server.
PRO
Questo libro è ottimo per innalzare il livello di conoscenza del T-SQL dal basilare all’avanzato, grazie all’eccellente struttura didattica basata su concreti esempi spiegati quasi passo per passo e affiancati da consigli di buona programmazione. Notevole la vastità di argomenti trattati, che spaziano dallo sviluppo all’amministrazione di SQL Server 2008.
L’inglese utilizzato dall’autore non fa praticamente uso di termini colloquiali o di uso poco comune, e quindi è di facile comprensione anche dai lettori non madrelingua.
CONTRO
Nulla di particolare da segnalare.
Voto complessivo: 9/10
Lettore: Intermedio/Avanzato
Table of Contents
About the Author
About the Technical Reviewer
Acknowledgments
Introduction
1 - Cap. 1 SELECT
63 - Cap. 2 Perform, Capture, and Track Data Modifications
115 - Cap. 3 Transactions, Locking, Blocking, and Deadlocking
143 - Cap. 4 Tables
197 - Cap. 5 Indexes
217 - Cap. 6 Full-Text Search
239 - Cap. 7 Views
257 - Cap. 8 SQL Server Functions
307 - Cap. 9 Conditional Processing, Control-of-Flow, and Cursors
325 - Cap. 10 Stored Procedures
343 - Cap. 11 User-Defined Functions and Types
373 - Cap. 12 Triggers
401 - Cap. 13 CLR Integration
419 - Cap. 14 XML, Hierarchies, and Spatial Data
449 - Cap. 15 Hints
459 - Cap. 16 Error Handling
475 - Cap. 17 Principals
501 - Cap. 18 Securables, Permissions, and Auditing
547 - Cap. 19 Encryption
579 - Cap. 20 Service Broker
615 - Cap. 21 Configuring and Viewing SQL Server Options
621 - Cap. 22 Creating and Configuring Databases
669 - Cap. 23 Database Integrity and Optimization
687 - Cap. 24 Maintaining Database Objects and Object Dependencies
697 - Cap. 25 Database Mirroring
717 - Cap. 26 Database Snapshots
723 - Cap. 27 Linked Servers and Distributed Queries
739 - Cap. 28 Query Performance Tuning
789 - Cap. 29 Backup and Recovery
823 - Index