Introduzione a SQL Server 2008 Express

In questo articolo parleremo di Microsoft SQL Server.

SQL Server nasce inizialmente da uno sforzo congiunto di Microsoft, Sybase and Ashton-Tate che nel 1989 creano tale prodotto avente come target OS/2.

Dopo alcune vicessitudini Microsoft si smarca da Sybase e SQL Server versione 6.0 è la prima versione per Windows NT che non ha più dipendenze di copyright da Sybase.

SQL Server ha guadagnato una sua dignita, crescendo negli anni.
Per fare un esempio, inizialmente SQL Server condivideva le limitazioni di Sybase, tra cui una ridotta efficacia nell'eseguire SQL non compilato in stored procedure:

In SQL Server version 6.5 and earlier, stored procedures were a way to partially precompile an execution plan. At the time the stored procedure was created, a partially compiled execution plan was stored in a system table. Executing a stored procedure was more efficient than executing an SQL statement because SQL Server did not have to compile an execution plan completely, it only had to finish optimizing the stored plan for the procedure. Also, the fully compiled execution plan for the stored procedure was retained in the SQL Server procedure cache, meaning that subsequent executions of the stored procedure could use the precompiled execution plan.

SQL Server 2000 and SQL Server version 7.0 incorporate a number of changes to statement processing that extend many of the performance benefits of stored procedures to all SQL statements.

Come Oracle, anche Microsoft offre una versione 'Express' e gratuita di SQL Server. Ha diverse limitazioni, tra cui l'impossibilità di utilizzare più di 1GB di RAM ed essere mono-core.
Nonostante questo però SQL Server è più leggero e veloce di Oracle, e Microsoft lo ha aggiornato per migliorare la sua capacità di gestire un numero sempre maggiore di righe. Come Oracle, ha un ottimizzatore statistico, anche se non sembra fortemente orientato a servirsene al posto del calcolo 'statico' come vediamo fare da Oracle 10g.
Ho avuto modo di lavorare da vicino con SQL Server, scrivere stored proedure di una certa complessità e gestire deploy. La mia impressione è molto positiva, è un database agile come MySQL ma con feature simili a quelle di Oracle, di cui non condivide la complessità soprattutto a livello di Security (d'altronde da Microsoft ce lo si poteva aspettare...).
Nonostante questo è possibile configurare i diritti di accesso con una buona granularità.
La documentazione è buona, gli esempi su Internet molto numerosi.
Per queste ragioni intendo scrivere alcuni articoli introduttivi sul suo uso, di cui questo è il primo. Andiamo quindi ad iniziare...
Introduzione
Microsoft SQL Server è un prodotto commerciale. Come tale, dovete essere ben consapevoli che la sua introduzione ha una serie di costi non indifferenti, tra cui la licenza del Server Windows e del DB stesso (che veleggia intorno ai 4.000 dollari a CPU).
La versione express può essere scaricata da questo comodo link, e vi consiglio di iniziare ora a farlo, mentre continuate a leggere :)
Tra i vantaggi di SQL Server possiamo annoverare:
  • Una buona compatibilità con la sintassi di Sybase
  • Tool di sviluppo gratuiti piuttosto buoni (come il SQL Management Studio Express)
  • Strumenti evoluti come la ricerca full-text anche nella versione gratuita
  • Grazie ad un linguaggio per creare stored procedure piuttosto amichevole, è possibile spostare molta business logic lato server ed integrarlo anche con altri linguaggi (es PHP, Java,...)
  • I tool a corredo permettono uno scripting delle operazioni molto agile. Quello che normalmente avreste solo con TOAD per Oracle,  qui lo trovate gratis
Volendo fare un paragone SQL Server può essere considerato una specie di MySQL con in più il supporto alle transazioni e feature tipiche di un prodotto di fascia medio-alta.

Per le nostre prove ci siamo serviti di un server con virtualizzato vmware, per mettere alla prova le performance di SQL Server anche in un ambiente a basse prestazioni

Tra i punti negativi:

  • La versione embedded di SQL Server (Compact Edition)  risulta non molto compatibile a livello di SQL e di tool (la maggiorparte dei tool di mapping,  incluso Linq2SQL non vanno). Da questo punto di vista SQLite risulta una migliore alternativa nel segmento embedded, usato perfino da Apple per il so iPhone. Per questa ragione sconsigliamo la valutazione della CompactEdition
  • Durante il passaggio di parametri alle stored procedure, ogni tanto i dati vengono troncati senza comunicare l'errore. Se per esempio inviate una stringa di 10 caratteri in un campo dichiarato lungo 5, non sempre viene comunicato un errore di troncamento arbitrario.
  • Installare SQL Server Express 2008 R2 su Windows XP SP3 è un po' tortuoso perché dovete aggiornarvi il Windows installer e installarvi a mano la PowerShell. Tutte cose che potevano essere incluse, ma si sa, la semplicità in un azienda grande come Microsoft non è facile da imporre...