Tra le tante novità di SQL Server 2016, una versione migliorata del DBCC CHECKDB, il tool per il controllo di integrità del database.

Le novità riguardano la gestione dei lock, gli Extended Logical Checks e la possibilità di modificare le impostazioni del parallelismo.

Quest'ultima opzione, in particolare, richiesta da tempo (vedi qui) perché utile in quegli ambienti OLTP dove il grado di parallelismo è per necessità mantenuto a valori minimi. Maggiori informazioni in questo articolo di Aaron Bertrand.

In questo post riepilogativo voglio segnalare, a chi sta approcciando SQL Server o a chi vuole approfondire questi argomenti, alcune serie di post che esperti di SQL Server hanno scritto sui temi più vari.

A SQL Server DBA Myth a day
di Paul Randal

(1/30) in-flight transactions continue after a failover
(2/30) DBCC CHECKDB causes blocking
(3/30) instant file initialization can be controlled from within SQL Server
(4/30) DDL triggers are INSTEAD OF triggers
(5/30) AWE must be enabled on 64-bit servers
(6/30) three null bitmap myths
(7/30) multiple mirrors and log shipping load delays
(8/30) unicorns, rainbows, and online index operations
(9/30) data file shrink does not affect performance
(10/30) database mirroring detects failures immediately
(11/30) database mirroring failover is instantaneous
(12/30) tempdb should always have one data file per processor core
(13/30) you cannot run DMVs when in the 80 compat mode (T-SQL Tuesday #005)
(14/30) clearing the log zeroes out log records
(15/30) checkpoint only writes pages from committed transactions
(16/30) corruptions and repairs
(17/30) page checksums
(18/30) FILESTREAM storage, garbage collection, and more
(19/30) TRUNCATE TABLE is non-logged
(20/30) restarting a log backup chain requires a full database backup
(21/30) corruption can be fixed by restarting SQL Server
(22/30) resource governor allows IO governing
(23/30) lock escalation
(24/30) twenty six restore myths
(25/30) fill factor
(26/30) nested transactions are real
(27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB
(28/30) BULK_LOGGED recovery model
(29/30) fixing heap fragmentation
(30/30) backup myths

Per i più pigri Sorriso:Paul ha condensato il tutto in questo pdf.

An XEvent a Day
di Jonathan Kehayias

(1 of 31) – An Overview of Extended Events
(2 of 31) – Querying the Extended Events Metadata
(3 of 31) – Managing Event Sessions
(4 of 31) – Querying the Session Definition and Active Session DMV’s
(5 of 31) – Targets Week – ring_buffer
(6 of 31) – Targets Week – asynchronous_file_target
(7 of 31) – Targets Week – bucketizers
(8 of 31) – Targets Week – synchronous_event_counter
(9 of 31) – Targets Week – pair_matching
(10 of 31) – Targets Week – etw_classic_sync_target
(11 of 31) – Targets Week – Using multiple targets to simplify analysis
(12 of 31) – Using the Extended Events SSMS Addin
(13 of 31) – The system_health Session
(14 of 31) – A Closer Look at Predicates
(15 of 31) – Tracking Ghost Cleanup
(16 of 31) – How Many Checkpoints are Issued During a Full Backup?
(17 of 31) – A Look at Backup Internals and How to Track Backup and Restore Throughput (Part 1)
(18 of 31) – A Look at Backup Internals and How to Track Backup and Restore Throughput (Part 2)
(19 of 31) – Using Customizable Fields
(20 of 31) – Mapping Extended Events to SQL Trace
(21 of 31) – The Future – Tracking Blocking in Denali
(22 of 31) – The Future – fn_dblog() No More? Tracking Transaction Log Activity in Denali
(23 of 31) – How it Works – Multiple Transaction Log Files
(24 of 31) – What is the package0.callstack Action?
(25 of 31) – The Twelve Days of Christmas
(26 of 31) – Configuring Session Options
(27 of 31) – The Future - Tracking Page Splits in SQL Server Denali CTP1
(28 of 31) – Tracking Page Compression Operations
(29 of 31) – The Future – Looking at Database Startup in Denali
(30 of 31) – Tracking Session and Statement Level Waits
(31 of 31) – Event Session DDL Events

SQL Server DBA Tips
by Ted Krueger

SQL Server DBA Tip 1 - Server Configuration – MAX Memory
SQL Server DBA Tip 2 - Server Configuration – Data/Log Files
SQL Server DBA Tip 3 - Server Configuration – Model Database
SQL Server DBA Tip 4 - Server Considerations - 32 bit / 64 bit
SQL Server DBA Tip 5 - Server Considerations - Installing Features (SSIS, SSRS, Engine, SSAS)
SQL Server DBA Tip 6 - Server Security – Windows Authentication / SQL Authentication
SQL Server DBA Tip 7 - Server Security and grouping – Schema Control
SQL Server DBA Tip 8 - Server Monitoring – Baseline
SQL Server DBA Tip 9 – SQL Server Monitoring – Default Trace
SQL Server DBA Tip 10 – SQL Server Reporting – Offload the reporting factor
SQL Server DBA Tip 11 – SQL Server Configuration – MIN Memory
SQL Server DBA Tip 12 – SQL Server Tuning – Missing Index DMV
SQL Server DBA Tip 13 – SQL Server built in DR/HA Solutions
SQL Server DBA Tip 14 – SQL Server General – Updating Production Data
SQL Server DBA Tip 15 – SQL Server Agent – Job ownership
SQL Server DBA Tip 16 – Working with Files and Folders

A DMV A Day
by Glen Berry

Day 1 sys.dm_os_buffer_descriptors
Day 2 sys.dm_exec_sessions
Day 3 sys.dm_os_sys_info
Day 4 sys.dm_os_sys_memory
Day 5 sys.dm_db_mirroring_auto_page_repair
Day 6 sys.dm_db_index_usage_stats
Day 7 sys.dm_db_missing_index_group_stats
Day 8 sys.dm_fts_active_catalogs
Day 9 sys.dm_os_schedulers
Day 10 sys.dm_exec_procedure_stats
Day 11 sys.dm_db_index_usage_stats
Day 12 sys.dm_db_partition_stats
Day 13 sys.dm_io_virtual_file_stats
Day 14 sys.dm_os_wait_stats
Day 15 sys.dm_os_performance_counters
Day 16 sys.dm_exec_cached_plans
Day 17 sys.dm_db_index_usage_stats
Day 18 sys.dm_clr_tasks
Day 19 sys.dm_os_wait_stats
Day 20 sys.dm_exec_cached_plans
Day 21 sys.dm_os_ring_buffers
Day 22 sys.dm_exec_query_memory_grants
Day 23 sys.dm_os_process_memory
Day 24 sys.dm_exec_requests
Day 25 sys.dm_os_memory_cache_counters
Day 26 sys.dm_exec_procedure_stats
Day 27 sys.dm_tran_locks
Day 28 sys.dm_io_pending_io_requests
Day 29 sys.dm_exec_connections
Day 30 sys.dm_os_buffer_descriptors

A SQL Server Hardware Nugget A Day
by Glen Berry

Day 1  (Westmere-EP)
Day 2 (Westmere-EX)
Day 3 (AMD Opteron 6100)
Day 4 (AMD Bulldozer)
Day 5 (Hardware ID – DMVs)
Day 6 (Hardware ID – Built-in)
Day 7 (CPU-Z)
Day 8 (Recommended Intel Processors)
Day 9 (Recommended AMD Processors)
Day 10 (Old Intel Processor Numbering)
Day 11 (New Intel Processor Numbering)
Day 12 (AMD Processor Numbering)
Day 13 (Intel Turbo Boost)
Day 14 (Intel Tick Tock Release Strategy)
Day 15 (Power Plans and CPU performance)
Day 16 (SQL Server 2008 R2 and Hardware)
Day 17 (Geekbench)
Day 18 (AMD Turbo CORE)
Day 19 (RAID Controllers)
Day 20 (Building a Desktop Test System)
Day 21 (Processor Cache Size)
Day 22 (32-bit vs. 64-bit)
Day 23 (Two Socket vs. Four Socket)
Day 24 (TPC-E Benchmark)
Day 25 (DB Server Processor Selection)
Day 26 (Laptop Processor Selection)
Day 27 (Crystal DiskMark)
Day 28 (Intel Chipsets and SSDs)
Day 29 (Hardware Resiliency)
Day 30 (RAID Level Primer)

Glenn ha pubblicato anche il libro SQL Server Hardware, che potete scaricare gratuitamente in format pdf dall’ottima libreria di Red-Gate !

A Join A Day
by Sebastian Maine (sqlity.net)

Come sempre… enjoy SQL Server ! Sorriso

E’ con immenso piacere ed un pizzico di orgoglio che annuncio la disponibilità della SQL Server 2012 Upgrade Tecnical Guide, la guida più completa, disponibile gratuitamente, sulla migrazione all’ultima versione di SQL Server da versioni precedenti.

Orgoglio perchè, in qualità di collaboratore di SolidQ Italia, ho contribuito anche io con tre dei venti capitoli di cui si compone la guida. Ed uno dei tre capitoli, quello sui SQL Server Management Objects, ha visto la luce in un periodo particolare dello scorso febbraio: durante una eccezionale nevicata che ha ricoperto tutto di un manto bianco di oltre un metro, che dalle mie parti è veramente un evento incredibile !!!

I capitoli di cui si compone la guida sono i seguenti:

Chapter 1: Upgrade Planning and Deployment
Chapter 2: Management Tools
Chapter 3: Relational Databases
Chapter 4: High Availability
Chapter 5: Database Security
Chapter 6: Full-Text Search
Chapter 7: Service Broker
Chapter 8: SQL Server Express
Chapter 9: SQL Server Data Tools
Chapter 10: Transact-SQL Queries
Chapter 11: Spatial Data
Chapter 12: XML and XQuery
Chapter 13: CLR
Chapter 14: SQL Server Management Objects
Chapter 15: Business Intelligence Tools
Chapter 16: Analysis Services
Chapter 17: Integration Services
Chapter 18: Reporting Services
Chapter 19: Data Mining
Chapter 20: Other Microsoft Applications and Platforms
Appendix 1: Version and Edition Upgrade Paths
Appendix 2: SQL Server 2012: Upgrade Planning Checklist

per un totale di ben 454 pagine di informazioni dettagliate e divise per argomento sulla migrazione a SQL Server 2012.

Scarica la SQL Server 2012 Upgrade Technical Guide [454 pagine/9 MB]

Enjoy SQL Server 2012!

La prossima settimana, nei giorni 28 e 29 marzo, si terrà a Milano la SQL Server & Business Intelligence Conference 2012, quest’anno particolarmente ricca di novità, sia nei contenuti che nell’organizzazione.

Argomento principale della conferenza sarà SQL Server 2012, appena rilasciato da Microsoft e per il quale abbiamo “preparato il terreno” nei mesi scorsi con i workshop della serie  “Road To Denali” tenuti presso le sedi Microsoft di Milano e Roma in collaborazione con UGISS, lo User Group Italiano di SQL Server. Tra l’altro ricordo che ci sono ancora un paio di appuntamenti, slittati per gli eventi di lancio di SQL Server 2012.

sqlconf2012_MediumRectangleIn questa edizione della conferenza si aggiungono, alle tradizionali sessioni “lunghe” anche una serie di eventi collaterali di approfondimento. Si tratta di sessioni dalla durata e partecipazione limitata, che quindi verranno ripetute più volte durante l’evento, organizzate come roundtable, consentono di discutere in modo aperto ed informale sui temi più disparati, andando a rendere gli stessi partecipanti protagonisti della cosa, facilitando cosi il networking e la condivisione di informazioni.

Quest’anno ho il piacere di essere tra gli speaker della conferenza e terrò proprio una delle sessioni di approfondimento sul tema “Upgrade a SQL Server 2012”, argomento che ho avuto modo di approfondire nel preparare, per conto di SolidQ, alcuni dei capitoli della SQL Server 2012 Upgrade Technical Reference Guide di prossima pubblicazione da parte di Microsoft.

Per chi non lo avesse già fatto, vi consiglio di registrarvi prima possibile, visto che i posti sono limitati (circa 20 mentre sto scrivendo questo post).

Vi aspetto!

E’ con immenso piacere che condivido la notizia del rilascio ufficiale di SQL Server 2012.

La RTM, siglata dal team di sviluppo di SQL Server qualche settimana fa, è disponibile per il download nella versione di valutazione da ieri sera.

Nella stessa pagina trovate anche disponibili i SQL Server Data Tools ed il SQL Server 2012 Feature Pack, che include tools e componenti di SQL Server 2012 installabili separatamente quali ad esempio:

  • SQL Server LocalDB
  • Master Data Service Add-in per Excel
  • StreamInsight 2.0
  • Semantic Language Statistics Database
  • PowerPivot per Excel 2010
  • Report Builder per SQL Server 2012
  • Drivers vari (OLEDB, ODBC, JDBC, PHP)
  • SQL Server Compact 4.0
  • SQL Server 2012 Upgrade Advisor

Vi segnalo anche l’evento virtuale di lancio di SQL Server 2012, con una serie di sessioni sulle caratteristiche della nuova versione. Potete leggere maggiori informazioni e registrarvi all’indirizzo http://www.sqlserverlaunch.com/ITA/Home.

Enjoy SQL Server 2012 !

E’ finalmente disponibile il tool di Microsoft per la migrazione assistita verso SQL Azure, Access, Sybase, Oracle e MySQL.

La nuova versione, tra le altre cose, supporta la conversione dei parametri %ROWTYPE di Oracle, i rollback triggers di Sybase ed una migliore gestione delle credenziali delle tabelle collegate di Access.

Questi i links dove scaricare il tool:

Download of the SSMA for Oracle.
Download of the SSMA for Sybase.
Download of the SSMA for MySQL.
Download of the SSMA for Access.

Vi segnalo anche il sito ufficiale del prodotto ed il blog del Team SSMA.

Enjoy SQL Server!

Finalmente, a partire dal Service Pack 1 di SQL Server 2008 R2, cambia il meccanismo di aggiornamento delle statistiche !

Come descritto molto molto bene in questo articolo di Igor Pagliai di Microsoft, finora la soglia che scatenava l’auto aggiornamento delle statistiche su tabelle con più di 500 records era fissa al 20% del numero di righe (più 500). Questo comporta, su tabelle molto grandi, la possibilità che SQL Server non scateni mai l’auto aggiornamento delle statistiche, con evidenti ripercussioni sui piani di esecuzione delle query!

A partire dal SP1 di SQL Server 2008 R2 questa soglia diventa dinamica, calcolata cioè sul numero di righe presenti nella tabella. Ancora l’algoritmo di calcolo del valore di soglia non è conosciuto, ma dai test che Igor riporta nell’articolo sembra che si abbassi con il crescere del numero di records presenti (ad esempio è l’1% per 10 milioni di records e decresce allo 0,3% per 100 milioni di records).

Questa funzionalità non è abilitata di default, ma va “accesa” introducendo nei parametri di avvio di SQL Server il flag –T2371 e riavviando il server.

Vi segnalo questo articolo di Feodor Georgiev che tratta di alcuni degli aspetti dell’amministrazione di SQL Server Reporting Services richiesti al DBA: la pianificazione, la documentazione dell’architettura e l’eventuale soluzione dei problemi.

Sempre dello stesso autore SSRS Performance Dashboard v12 un utilissima serie di reports custom per Management Studio che consentono di visualizzare le informazioni sulla struttura di SSRS e sulle statistiche di utilizzo.

La scorsa settimana si sono tenute, il 21 a Milano ed in replica il 22 a Roma, le prime due giornate della serie di workshop su SQL Server 2012, battezzata “Road to Denali”, pensate per portare all’attenzione della comunità di sviluppatori e sistemisti le novità che ci aspettano con il rilascio di SQL Server 2012, che presumibilmente sarà nella primavera del prossimo anno.

Da oggi sono disponibili in questa pagina (dove trovate anche il calendario degli altri appuntamenti) le slides e le demo delle sessioni.
Vi suggerisco di metterla tra i preferiti, perchè man mano che proseguiranno gli altri workshops sarà aggiornata con il materiale di ciascun incontro.

Colgo l’occasione per ringraziare Davide e Gianluca per avermi dato la possibilità di fare lo speaker in questa serie di eventi, attività nuova per me, ma decisamente gratificante ed emozionante. E’ stata la mia seconda esperienza di questo tipo e devo ammettere che almeno all’inizio non ci sono ancora abituato, ma del resto anche per questo genere di cose l’esperienza è la sola medicina…

Il workshop è servito anche a conoscere di persona un altro compagno di viaggio, Francesco, con cui ci siamo solamente “incrociati” via web per la preparazione degli screencast su SQL Server “Denali” la scorsa estate e che mi ha fatto davvero piacere incontrare.

Beh, a questo punto non mi resta che darvi appuntamento al prossimo workshop, che si terrà il 14 a Milano ed il 15 a Roma, sulle novità del motore di SQL Server 2012.

Io sarò a Roma il 15 per la sessione su Metadata discovery. Vi aspetto !

Volevo segnalarvi (e appuntarmelo, così non mi dimentico) questo post sul blog di uno dei membri del team PFE di SQL Server in Portogallo, che riassume molti links al materiale su SQL Server 2012 RC0.

Enjoy SQL Server!

Microsoft ha rilasciato questo pomeriggio la Release Candidate 0 di SQL Server 2012.

Potete scaricarla da questo link: http://www.microsoft.com/download/en/details.aspx?id=28145

Segnalo che è già disponibile la prima registrazione video delle sessioni di SQL Start!, la DEV103 SQL Server Spatial Data con Andrea Benedetti.

A breve le altre !

Enjoy SQL Start!

Tutto è iniziato alle Microsoft Technical Conferences nell’aprile di quest’anno, quando proposi a Davide Mauri, presidente di UGISS (lo User Group Italiano di SQL Server) e fondatore di SolidQ Italia, l’idea di organizzare un evento su SQL Server in Ancona, la mia città natale.

Vista la sua pronta adesione all’iniziativa ho subito iniziato a pensare a come avessi voluto costruire la prima conferenza sull’Adriatico dedicata al mio prodotto preferito e, a partire da settembre, ho iniziato a scrivere su Facebook, Linkedin, Twitter, chiamato amici e colleghi e contattato gli sponsor.

A Davide si sono poi aggiunti altri amici, vecchi e nuovi, quali Gilberto Zampatti, Andrea Benedetti, Daniele Romagnoli e Gian Maria Ricci: i migliori compagni di viaggio che avessi mai sperato per questa avventura!

Per non parlare di Stefano Ottaviani, Andrea Balducci e tutti gli altri ragazzi di DotNetMarche, che mi hanno prontamente aiutato ad organizzare l’evento, vista l’inesperienza del sottoscritto rispetto alla loro, che ormai hanno una ventina di workshop all’attivo!

Grazie anche a Giuliano Latini, del Centro Servizi Multimediali della Facoltà di Ingegneria dell’Università Politecnica delle Marche, che si è prodigato per ospitarci presso le aule dell’Università ed ha fornito il supporto per la rete wi-fi.

E ovviamente grazie anche al fotografo “ufficiale” dell’evento, Adriano Carbone, che come sempre ha “colto l’attimo” con le bellissime foto del 11/11/11 alle 11:11 !!!

Un doveroso ringraziamento va anche agli sponsors dell’evento: Ugiss, Microsoft, DotNetMarche, Cesmi, Bit PcsNet Marche, Apra e Alya. Senza il vostro supporto questo evento non avrebbe mai visto la luce.

Ora che l’evento è passato, l’adrenalina è tornata a livelli normali e ho iniziato a respirare di nuovo Sorriso posso dire che è andata veramente oltre le mie più rosee aspettative: 165 iscritti arrivati solamente tramite il passaparola e le newsletter di UGISS e Microsoft, che si sono concretizzati in un centinaio di presenze effettive. Addirittura un’intera classe quinta dell’ITIS Mattei di Recanati che è stata presente alle sessioni del mattino, con l’idea di fare una tesina su SQL Server. Tutti comunque attenti e partecipi a tutte le sessioni, anche quelle del tardo pomeriggio.

Visto il risultato ottenuto, stiamo già pensando ad una nuova edizione, il prossimo anno, magari, perché no,  il 12/12/12 Sorriso

Grazie a tutti, di nuovo.

Enjoy SQL Server (e SQL Start!)

Microsoft ha pubblicato le nuove politiche di licensing per quanto riguarda SQL Server 2012, la prossima versione di SQL Server prevista per la metà del prossimo anno.

Oltre alla documentazione ufficiale, vi segnalo anche l’ottimo articolo di Denny Cherry, che trovate qui.

La novità più interessante è l’introduzione della BI Edition, che si posiziona a metà tra la Standard e la Enterprise. Supporta solamente il modello di licenza Server+CAL, ma non credo sia una limitazione così vitale, visto il target di riferimento di questa edition.

Viene inoltre “cancellata” la DataCenter Edition, le cui funzionalità sono ora comprese nella Enterprise Edition.

Per chi fosse interessato a conoscere più da vicino SQL Server 2012, segnalo che sono stati pubblicati su MSDN BE.IT gli screencast per sviluppatori.

Ci sono anch’io con uno screencast sul nuovo oggetto SEQUENCE di SQL Server 2012.

Enjoy SQL Server !

Per visualizzare la porta sulla quale è in ascolto l’istanza corrente di SQL Server è possibile lanciare il seguente script T-SQL:

set nocount on
DECLARE @test varchar(20), @key varchar(100)
if charindex('\',@@servername,0) <>0
begin
    set @key = 'SOFTWARE\MICROSOFT\Microsoft SQL Server\' +@@servicename+'\MSSQLServer\Supersocketnetlib\TCP'
end
else
begin
    set @key = 'SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer \Supersocketnetlib\TCP'
end

EXEC master..xp_regread
    @rootkey='HKEY_LOCAL_MACHINE',
    @key=@key,
    @value_name='Tcpport',
    @value=@test OUTPUT

SELECT 'Server Name: '+@@servername + ' Port Number:'+convert(varchar(10),@test)

HTH

Se non avete tempo e voglia di installare la CTP3 della prossima versione di SQL Server, nome in codice “Denali”, potete scaricare da questo link la macchina virtuale per Hyper-V completa di Sharepoint 2010 ed Office 2010.

Nella stessa pagina trovate le istruzioni per l’installazione del VHD.

Microsoft ha appena rilasciato l’SSMS Tools Pack 2.0, un add-in per SQL Server Management Studio (per tutte le versioni di SQL Server a partire dalla 2005, compresa la Express Edition), ricchissimo di funzionalità per amministratori e sviluppatori.

Date un’occhiata alle features di questa nuova versione e poi scaricatela da questo link.

Microsoft ha annunciato che SQL Server “Denali” sarà l’ultima release a supportare le API OLEDB per accedere al database.

Vista l’affermazione di ODBC come standard de-facto per l’accesso ai database da parte di sistemi non-windows ed il pieno supporto di questa tecnologia anche sui prodotti cloud come SQL Azure, Microsoft ha deciso di dismettere il supporto per OLEDB al termine del periodo di sette anni dal rilascio di SQL Server “Denali”.

Per informazioni su come migrare il proprio codice managed basato su OLEDB ad ODBC potete consultare questa guida.

Per una panoramica delle tecnologie per l’accesso ai dati di SQL Server invece potete consultare questa sezione del SQL Server Developer Center di MSDN.

E’ disponibile, da ieri, la Product Guide di SQL Server “Denali” CTP3.

La guida si compone di risorse e demo utili per comprendere meglio le novità del prodotto, davvero interessanti:

  • 14 Product Datasheets
  • 8 PowerPoint Presentations
  • 5 Technical White Papers
  • 13 Hands-On Lab Preview Documents
  • 6 Click-Through Demonstrations
  • 13 Self-Running Demonstrations
  • 26 Links to On-Line References
  • 44 Links to On-Line Videos including 26 Presentations from North America TechEd 2011

Enjoy SQL Server “Denali” !

Volevo segnalare questo whitepaper di Microsoft, che fornisce utili indicazioni per gli amministratori di database SQL Server sulla manutenzione dei databases utilizzati da Sharepoint 2010.

Una delle nuove funzioni di SQL Server Denali CTP3 è quella denominata Product Upgrade: in sostanza durante il setup vengono ricercati eventuali aggiornamenti del prodotto ed applicati durante l’installazione di SQL Server.

Product Update può ricercare gli aggiornamenti in Microsoft Update, WSUS, cartelle locali o cartelle di rete (in questi ultimi due casi lanciando il setup da riga di comando ed utilizzando lo switch /UpdateSource = C:\nomecartella o \\server\nomecondivisione).

Per maggiori informazioni potete leggere questo post dal blog di MSDN.

Visto che tra poco dovrò farlo in produzione, me lo appunto qui.

In questo post Peter Saddow di Microsoft riporta passo passo le fasi di aggiornamento di un cluster SQL Server basato su 2008 R2 a SQL Server Denali CTP3. In realtà Peter dice che la build da lui utilizzata è quella immediatamente precedente al rilascio della CTP3, ma non dovrebbero esserci differenze sostanziali nella procedura.

Riporto qui anche il link ai documenti di upgrade e al funzionamento dei rolling patch e service packs:

Nelle versioni precedenti e corrente di SQL Server il designer del Business Intelligence Development Studio (BIDS) nell’aprire un package ne verifica i data source per validare i metadati di sorgenti e destinazioni. Questo comportamento, nel caso in cui il data source non sia raggiungibile o su rete poco performante, determina ovviamente tempi di attesa nell’apertura del package anche di alcuni minuti!

Nella nuova versione di SQL Server, “Denali”, è stato introdotto un simpatico Sorriso switch che consente di mettere offline il connection manager, rendendo il caricamento del package molto più veloce. Quando il progetto viene chiuso, il connection manager viene automaticamente reimpostato ad online.

Per usufruire di questa nuova modalità è sufficiente cliccare con il tasto destro sul connection manager e quindi cliccare su Work Offline.

Questo ed altri “trucchetti” per ottimizzare le prestazioni nello sviluppo di package SSIS in Denali li trovate nel BOL.

Da qualche giorno è disponibile per il download la Community Technical Preview 3 di SQL Server “Denali”, la nuova versione di SQL Server. E’ possibile scaricarla da questo link.

Sono appena rientrato dalle vacanze e non ho ancora avuto modo di provare le novità, ma conto di farlo in settimana.

Enjoy SQL Server!

Grazie a Gian Maria per la segnalazione di questo utilissimo tool per l’analisi dei log di SQL Server Integration Services.

Tra le caratteristiche più interessanti, la possibilità di visualizzare il grafico delle performance del package, che indica “a colpo d’occhio” dove si possono nascondere eventuali problemi o l’auto-analisi del package per suggerire allo sviluppatore dove intervenire.

Funziona sia con SQL Server 2005 che 2008 (occhio, ci sono due build separate!) e richiede il framework 3.5 SP1 per poter funzionare correttamente.

Segnalo che è disponibile questo whitepaper sulle operazioni di configurazione, manutenzione, capacity planning e troubleshooting applicabile a SQL Server Analysis Services nelle versioni 2005, 2008 e 2008 R2.

Segnalo questo whitepaper del Customer Advisory Team di SQL Server che tratta di argomenti relativi al disegno e all’implementazione della tecnologia FILESTREAM su SQL Server 2008 R2.

Con la sempre più frequente memorizzazione in SQL Server di dati non strutturati, quali documenti, immagini e video, la possibilità di gestire tali informazioni direttamente su filesystem, lasciando a SQL Server il compito di mantenere la consistenza transazionale e di gestirne la complessità, è sicuramente un motivo in più per accelerare la migrazione a SQL Server 2008 R2.

Sempre dal blog del team SQLOS segnalo alcuni posts sulle novità che ci aspettano con SQL Server “Denali”, la prossima versione di SQL Server in arrivo con il prossimo autunno.

SQL Server Memory Manager Changes in Denali
La prossima versione di SQL Server conterrà cambiamenti significativi nella gestione della memoria. In particolare, gli attuali gestori di memoria (uno per le pagine di 8k ed uno per le pagine di dimensioni superiori agli 8k) saranno unificati in un unico memory manager.
Questa modifica avrà impatto sui comandi (DBCC MEMORYSTATUS), sulle DMVs (aggiunta o rimozione di colonne in relazione alle modifiche fatte alla gestione della memoria), sui messaggi di errore. Sono state modificate anche le caratteristiche del parametro di configurazione “max server memory”, che accetta ora un limite minimo di 128MB (contro il precedente minimo di 64MB) e da questa versione tutti i componenti di gestione della memoria sono assoggettati a questo parametro, mentre nelle precedenti versioni veniva limitata solamente la gestione delle pagine di 8k.
A partire da “Denali” viene deprecata la funzionalità AWE (Address Windowing Extensions), presente nelle versioni a 32bit per gestire indirizzamenti superiori ai 4GB di memoria.
New DMVs in Denali
Con “Denali” arrivano anche nuove DMVs:
- sys.dm_os_windows_info: ritorna alcune informazioni sul sistema operativo del server.
- sys.dm_server_registry: ritorna un elenco delle chiavi del registry usate da SQL Server.
- sys.dm_server_services: ritorna informazioni sullo stato dei tre principali servizi (SQL Server, SQL Server Agent, SQL Full-Text).
- sys.dm_server_memory_dumps: ritorna i dumps generati dal sistema.
More on DMV changes in SQL 2008 R2 SP1
Oltre alle precedenti DMVs introdotte in “Denali”, anche la sys.dm_exec_query_stats è stata aggiornata, aggiungendo ulteriori informazioni.

C’è anche una nuova DMF (Dynamic Management Function), la sys.dm_os_volume_stats(f.database_id, f.file_id), che restituisce utili informazioni sullo spazio libero per le partizioni su cui risiedono i dati di SQL Server.

Vi segnalo questo articolo sul blog del team di SQLOS che riporta come utilizzare le wait statistics per risolvere problemi di performance di SQL Server 2008.

Nello stesso articolo trovate alcuni links ad altrettanti posts relativi al performance tuning su SQL Server 2000 e 2005, oltre all’utilissimo IOMeter, il tool di Intel per monitorare le prestazioni dei vostri dischi.

Una delle caratteristiche più interessanti di SQL Server 2008 è la capacità di comprimere i dati a livello di riga o di pagina.

Chi ha avuto modo di implementare questa funzione ha probabilmente utilizzato la stored procedure sp_estimate_data_compression_savings, che restituisce le informazioni riguardo alle dimensioni di ciascun oggetto (tabella o vista indicizzata) con le impostazioni correnti e ottimali.

Da ieri è presente in Codeplex questo tool per calcolare quale compressione utilizzare per gli oggetti presenti nel database, con la possibilità di evidenziare il tasso di modifica degli indici, per consentire al DBA, ad esempio, di scegliere una modalità di compressione meno aggressiva per indici molto dinamici.

Volevo segnalare questo tool per la modifica ed il test di espressioni in SQL Server Integration Services.

Oltre ad essere utilizzabile come eseguibile stand-alone, può essere utile anche estrapolando l’Expression Editor Control, che può essere riutilizzato in altre applicazioni, come segnalato dallo stesso autore.

Qualche tempo fa, in occasione della keynote del PASS Summit 2010, avevo segnalato un nuovo prodotto Microsoft, ancora in fasce, dal nome in codice Atlanta.

Si tratta di un servizio di configurazione ed assessment Azure-based che, previa registrazione sul sito http://www.systemcenteradvisor.com/ ed installazione di un agente e di un gateway, consente di raccogliere i dati del server da monitorare, analizzarne l’esito con tanto di indicazioni sulle modifiche da effettuare per ottimizzare il proprio sistema e storico delle modifiche.

Maggiori informazioni le trovate in questo post nel blog del CSS (Customer Service and Support di SQL Server) di Bob Ward.

Segnalo la disponibilità degli ultimi Cumulative Updates per SQL Server.

Attenzione !!! Microsoft riporta che, per quanto riguarda SQL Server 2005 SP3 e SP4, questi saranno gli ultimi cumulative updates. Pertanto, se avete ancora installazioni di questa versione è giunto il momento di pianificare la migrazione !

Cumulative Update

Build number

Riferimento KB

# fixes

SQL Server 2005 SP3 Cumulative Update #15

9.00.4325

2507766

5

SQL Server 2005 SP4 Cumulative Update #3

9.00.5266

2507769

4

SQL Server 2008 SP1 Cumulative Update #13

10.00.2816

2497673

12

SQL Server 2008 SP2 Cumulative Update #3

10.00.4279

2498535

25

Volevo segnalarvi un tool molto interessante per chi lavora con SSIS.

Si chiama BI xPress ed è prodotto dalla Pragmatic Works. Si integra direttamente in Visual Studio e consente di creare, distribuire, monitorare packages SSIS in maniera molto semplice e veloce.

audit

Ne esistono due versioni: una gratuita ed una commerciale, che costa 795 dollari con un anno di supporto incluso nel prezzo. Qui trovate le differenze tra le due versioni e l’elenco di funzionalità del prodotto.

Mi occupo di SQL Server da ormai più di dieci anni, sin dalla versione 6.5, e di VMWare ESX da cinque, iniziando con due-tre macchine virtuali installate per “scommessa”, fino ad arrivare all’attuale infrastruttura che conta ben 180 servers, oltre due terzi della server farm !

Per implementare l’architettura di virtualizzazione mi sono basato principalmente sui whitepapers di VMWare e sui (pochi) libri in circolazione.

Per chi approccia ora questa tematica, ed in particolare per chi decide di sfruttare la virtualizzazione anche per SQL Server, riporto in questo post una serie di link ai documenti di VMWare, IBM ed HP dove si parla di SQL Server e di come virtualizzarlo.

SQL Server
Performance and Scalability of Microsoft® SQL Server® on VMware vSphere™ 4
Microsoft SQL Server and VMware Virtual Infrastructure
Availability Guide for Deploying SQL Server on VMware® vSphere
Microsoft® SQL Server on VMware® Best Practices Guide
Best Practices Guide for Virtualizing SQL Server
Performance Study: SQL Server Workload Consolidation
White Paper: SQL Server Performance in VMware Infrastructure
Consolidating Microsoft SQL Server on the IBM System x3950 M2
Server Consolidation with VMWare ESX Server

Best Practices
Performance Best Practices for VMware vSphere™ 4.1
Performance Troubleshooting for VMware vSphere 4

CPU
VMware® vSphere™: TheCPU Scheduler in VMware ESX® 4.1
VMware vSphere™ 4: The CPU Scheduler in VMware® ESX™ 4

Memory
Understanding Memory Resource Management in VMware® ESX™ Server
Understanding Memory Resource Management in VMware ESX 4.1
Virtual Performance: Love Your Balloon Driver
Large Page Performance

DiskIO
VMware vSphere 4 Performance with Extreme I/O Workloads
VMware® vStorage Virtual Machine File System Technical Overview and Best Practices
Recommendations for Aligning VMFS Partitions

Comparison of Storage Protocol Performance in VMware vSphere™ 4
PVSCSI Storage Performance

Cercherò di mantenere aggiornata questa pagina man mano che saranno disponibili eventuali altri documenti a riguardo.

Naturalmente si accettano suggerimenti ! :-)

Enjoy SQL Server (e VMWare).

Un vero e proprio… supermarket con più di 100 componenti per Integration Services, alcuni gratuiti, altri a pagamento.

Lo trovate qui.

Utilizzare SQL Server nella maniera migliore richiede tempo, pratica e soprattutto tanta voglia di imparare.

Kalen Delaney, in collaborazione con SQL Server Central, ha lanciato una nuova serie di tutorials denominati “Stairways”. Ad oggi sono pubblicati in queste categorie:

    • SQL Server Agent
    • Server-side Tracing
    • SQL Server Indexes
    • Transactional and Merge Replication
    • Database Design
    • MDX
    • Integration Services
    • Reporting Services
    • StreamInsight

Non tutte le categorie sono già complete, ma sono mantenute in maniera regolare dai vari autori.

Enjoy SQL Server !

Mi appunto qui questo script di Michelle Ufford (SQLFool.com), che si occupa di deframmentare gli indici di databases SQL Server 2005 e 2008, anche di dimensioni ragguardevoli. Appena ho un attimo lo provo…Occhiolino

Volevo segnalare che su Codeplex è disponibile una nuova versione delle EzAPI, un’alternativa alle API per la creazione di packages SSIS direttamente da codice.

Questa nuova versione corregge alcuni bugs ed implementa diverse nuove funzionalità.

La pagina principale del progetto EzAPI si trova qui, mentre l’update all’ultimissima versione lo trovate qui.

E’ disponibile per il download il poster delle DMVs aggiornato a SQL Server 2008 R2.

Lo trovate qui.

Per chi volesse provare la nuova versione di SQL Server in anteprima (siamo alla prima Community Technical Preview) dopo l’annuncio di ieri, dal sito Microsoft SQL Server Future Editions è possibile scaricare il prodotto ed accedere ai Books Online, oltre che alle informazioni sui prerequisiti e sulle modalità di installazione.

E’ iniziata ieri a Seattle la più grande conferenza al mondo dedicata a SQL Server, il PASS Community Summit 2010.

Nella keynote di apertura dell’evento sono stati diversi gli argomenti che hanno catturato l’attenzione dei tanti (quasi quattromila partecipanti !) presenti:

Parallel Data Warehouse

E’ stata ufficialmente rilasciata la Parallel Data Warehouse Edition di SQL Server 2008 R2, la verisone pensata per grandi data warehouse, con dimensioni fino a centinaia di terabytes. Dell e HP saranno tra i primi a rilasciare specifiche appliance con questo nuovo prodotto. Interessante la console web di amministrazione di SQL Server PDW, che consente di monitorare la ripartizione del carico sui processori dei vari nodi.

SSAS

Yahoo ha presentato la propria soluzione Analysis Services, in grado di processare 3.5 miliardi di records al giorno, per un volume di 1.2 tera processati in un cubo di 12 TB.

Progetto “Atlanta”

Altra novità, pensata per SQL Server 2008 e 2008 R2, è il progetto “Atlanta”, un servizio di configurazione e assessment  che gira sulla piattaforma Azure. Ci si registra sul sito www.microsoftatlanta.com, si scarica il certificato per l’installazione, si scarica ed installa l’agente e/o il gateway per la raccolta delle informazioni sulla configurazione del proprio SQL Server 2008 e Atlanta verificherà la nostra installazione, suggerendo le modifiche necessarie per risolvere potenziali problemi o errori di configurazione. Le variazioni saranno registrate, consentendo al DBA di monitorare nel tempo lo stato del sistema.

SSRS

SQL Server Reporting Services è ora disponibile come servizio Azure. Tramite i ben noti strumenti disponibili sul BIDS è ora possibile creare ed effettuare il deployment dei propri reports direttamente su Azure, accedendo ai dati su SQL Azure.

Azure Marketplace

Dal nuovo marketplace di Azure è possibile acquistare acquistare “pacchetti” di dati, utilizzabili da SSRS tramite un URL ODATA ed integrabili con i propri dati.

Denali (SQL Server 2011)

E’ stata rilasciata la prima CTP pubblica di Microsoft “Denali”, il nome in codice della prossima versione di SQL Server, in arrivo nel 2011. La trovate qui.
Una delle novità più entusiasmanti è l’inclusione del motore Vertipaq sia su SSAS che nel motore relazionale. Nelle demo fatte ieri ne è stato mostrato l’utilizzo da Powerpivot con l’accesso a 2 miliardi di records in un paio di secondi !!! Davvero impressionante.

Spesso mi è capitato di trovare installazioni di SQL Server fatte su un unico disco C:, perché magari il server era stato acquistato con pochi dischi e di conseguenza l’array creato utilizzando RAID 5 (per chi non ha dimestichezza con RAID, potete dare un’occhiata qui e qui) ed un unico volume.

Una installazione tipica di SQL Server necessita invece di un maggior numero di volumi logici (e quindi, dove possibile, di dischi fisici organizzati in array con il livello RAID opportuno), sia per questioni di performance (i files di database insieme al sistema operativo ed il suo file di paging non sono esattamente la condizione ideale), sia per questioni di affidabilità e sicurezza.

Che cosa si può fare in questi casi ?

Prima di tutto acquistare altri dischi, installarli e configurare uno o più array logici. Ricordate che per i dischi dove vanno solamente i data files di SQL Server è buona norma formattare con l’opzione /A:64K per impostare l’unità di allocazione a 64K (pari ad un extent, cioè l’unità minima di allocazione per SQL Server).

Quindi spostare il database sulle nuove unità logiche. Ci sono diversi modi per farlo(detach/attach, backup/restore, etc), ma quello più sicuro ed affidabile, che consente anche un ripristino veloce della condizione di partenza è questo:

  • Mettere offline il database con il comando ALTER DAioTABASE nome-database SET OFFLINE
  • Copiare i files contenenti i dati del database (*.mdf e *.ndf) nel nuovo disco
  • Copiare i files di log (*.ldf) in un altro disco
  • Notificare a SQL Server le nuove posizioni dei files mediante il comando ALTER DATABASE (la sintassi la trovate qui, vedi esempio F. Moving a file to a new location). Ad esempio:

USE master;
GO

ALTER DATABASE nome-database
MODIFY FILE
(
    NAME = nome-database-datafile,
    FILENAME = N'E:\SQL Server Data Files\nome-database.mdf'
);
GO

ALTER DATABASE nome-database
MODIFY FILE
(
    NAME = nome-database-logfile,
    FILENAME = N'L:\SQL Server Log Files\nome-database.ldf'
);
GO
  • Rimettere online il database con il comando ALTER DATABASE nome-database SET ONLINE

In questo modo, i vecchi files saranno ancora al loro posto e, se necessario, sarà possibile ripristinare la condizione di partenza semplicemente ripetendo i passi sopra elencati con le posizioni originali dei files di database.

Ovviamente, PRIMA di fare qualsiasi cosa, è buona norma fare un backup completo del database… non si sa mai !

E’ stata rilasciata ieri la versione RTM di SQL Server 2008 R2.

La nascita di questa versione migliorata e potenziata di SQL Server è stata in larga misura condivisa con i feedback forniti dai clienti che utilizzano SQL Server, fornendo a  Microsoft lo spunto per la creazione di quella che è stata ribattezzata la “piattaforma delle informazioni”.

Il consolidamento di SQL Server 2008 come mission critical platform, una migliore capacità di amministrazione multi-server e centralizzata, la gestione di flussi di eventi complessi in tempo reale, la business intelligence “self-service” sono tra le novità più interessanti di questa release.

Ci sono anche due nuove versioni: Datacenter e Parallel Data Warehouse, dedicate in modo particolare a grandi organizzazioni e alla gestione di data warehouse di dimensione considerevole che necessitano di elevata potenza di calcolo.

In questa pagina di MSDN trovate riepilogate le novità principali della versione R2.

La nuova versione di SQL Server sarà resa disponibile per il download ai sottoscrittori di MSDN e Technet il 3 maggio, mentre la disponibilità a livello mondiale sarà per il 13 maggio.

Per chi vuole dare un’occhiata più da vicino alle varie features di “R2” è disponibile il SQL Server 2008 R2 Digital Tour.

Enjoy SQL Server 2008 R2 !

Microsoft ha rilasciato recentemente due cumulative updates per SQL Server 2008: rispettivamente la CU #8 per la versione con SP1 e la CU #10 per la RTM.

Trovate i dettagli e le istruzioni per il download nei links sottostanti.

http://support.microsoft.com/kb/979065/en-us

http://support.microsoft.com/kb/979064/en-us

Dopo l'installazione della Cumulative Update, la versione di SQL Server 2008 sarà rispettivamente la 10.00.2766 per la CU #7 e 10.00.1835 per la CU #10.

Microsoft ha rilasciato lo scorso 2 marzo il SQL Server 2008 R2 Update for Developers Training Kit, che fornisce agli sviluppatori una notevole quantità di informazioni: presentazioni, video, demo, hands-on-labs.

Utilissimo sia a chi già sviluppa con SQL Server 2008, sia per chi si avvicina ora all’ultima versione di SQL Server e vuole conoscerne le features che può implementare nelle proprie applicazioni.

Lo trovate qui.

Lo scorso 12 Gennaio 2010 è scaduto il supporto del Service Pack 2 di SQL Server 2005, mentre il prossimo 13 Aprile 2010 scadrà quello per SQL Server 2008 RTM.

Questo comporta la necessità di aggiornare prima possibile SQL Server 2005 al Service Pack 3 e SQL Server 2008 al Service Pack 1, pena la mancanza del supporto primario.

Maggiori informazioni sul ciclo di vita del supporto tecnico ai prodotti Microsoft lo trovate in questo sito : http://support.microsoft.com/lifecycle

Paul Randal ha scritto una interessante serie di articoli sulle capacità di backup/restore/repair di SQL Server.

Nell’ultimo articolo si parla del RESTORE ed in particolare

  • Le quattro fasi dell’operazione di restore: come funzionano e come farle funzionare più velocemente

  • Cosa fare per ripristinare un database quando si verifica un disastro

  • Cosa fare quando si è in grado di ripristinare un database

  • Usare le opzioni WITH RECOVERY / NORECOVERY / STANDBY

  • Utilizzo del restore point-in-time

  • Considerazioni sul restore in posizioni differenti dalla posizione originale

Come sempre Paul è chiarissimo e vale davvero la pena leggere i suoi articoli per chiarirsi le idee sul comportamento di SQL Server.

Buona lettura!

Un paio di giorni fa Microsoft ha rilasciato un paio di Cumulative Updates per le versioni RTM e SP1 di SQL Server 2008. Per maggiori informazioni vi rimando ai links sottostanti, nei quali sono indicati tutti i problemi risolti da queste CU e le informazioni su come scaricarle ed installarle.

SQL Server 2008 Cumulative Update #8
Build: 10.00.1823
http://support.microsoft.com/kb/975976

SQL Server 2008 SP1 Cumulative Update #5
Build: 10.00.2746
http://support.microsoft.com/kb/975977

Mi è capitato di leggere su un newsgroup la richiesta “è possibile installare SQL Server Agent su un server diverso da quello dove è presente l’engine ?”.

La risposta è no. L’installazione di SQL Server non lo consente: quando seleziono dall’elenco delle feature disponibili per l’installazione il “Database Engine”, trovo installato anche SQL Server Agent.

Esiste però, per ovviare alla mancanza di questo componente nella versione Express di SQL Server, la versione beta di un prodotto disponibile su Codeplex: Standalone SQL Agent.
Il suo autore indica che nella versione attuale supporta SQL Server 2005 e 2008 ed ha soltanto alcuni tipi di job disponibili (Transact-SQL e comandi di sistema operativo), ma è già pianificata l’estensione ad altre tipologie di job e la creazione di una interfaccia utente già dalle prossime versioni.

Risposta:

select request_session_id, count(*) AS Total
from sys.dm_tran_locks
group by request_session_id

Dal BOL: “sys.dm_tran_locks returns information about currently active lock manager resources. Each row represents a currently active request to the lock manager for a lock that has been granted or is waiting to be granted”

Si preannuncia un autunno davvero caldo… Sono in arrivo una serie di conferenze, tutte dai contenuti tecnici veramente impressionanti.

Quindi… SELECT * FROM Events ORDER BY StartDate, EndDate :-)

PASS Summit Unite
Seattle, WA
2-5 novembre 2009
http://summit2009.sqlpass.org

SQL Connections
Las Vegas, Nevada
9-12 novembre 2009
http://www.devconnections.com/shows/FALL2009SQL

TechEd Europe
Berlino, Germania
9-13 novembre 2009
http://www.microsoft.com/europe/teched/

PDC 2009
Los Angeles, California
17-19 novembre 2009
http://microsoftpdc.com/

Microsoft TechDays-WPC 2009
Milano, Italia
24-26 novembre 2009
http://techdays-wpc.it/

Buon divertimento!

Summit2009_300x250Per chi non conoscesse questo acronimo, PASS sta per Professional Association for SQL Server, una comunità di professionisti IT appassionati di SQL Server che è anche l’organizzatore del più grande evento dedicato a questo prodotto: il PASS Summit Unite (noto anche come PASS Community Summit) che quest’anno si terrà dal 2 al 5 novembre a Seattle.

Ho avuto la fortuna di partecipare qualche anno fa a questo evento ed è veramente un occasione unica per incontrare i maggiori esperti di SQL Server, oltre a buona parte degli sviluppatori di Redmond che non è raro incontrare nelle varie sessioni.

Ed è con estremo piacere che posso dire che, da ieri, anche SQLServerInfo è presente nell’elenco dei bloggers di SQL Server !

Le operazioni di restore o di spostamento di un database su  un altro server modificano la data di creazione del database presente nelle tabelle di sistema (ad esempio sys.databases).

Esiste però un trucchetto per riuscire a recuperare l’effettiva data di creazione dell database originale dalla pagina di boot del database (la pagina 9). Per accedere a queste informazioni occorre sfruttare il flag 3604, che attiva l’accesso alle strutture interne a SQL Server.

DBCC TRACEON(3604)
GO
DBCC PAGE (<MyDatabaseName>, 1, 9, 3)
GO

Cercate il campo dbi_crdate: è la data di creazione originale del database!

Oltre alla data di creazione, questa pagina contiene altre informazioni utili. Ad esempio il campo dbi_dbccLastKnownGood contiene l’ultima data in cui il comando DBCC CHECKDB ha trovato degli errori di corruzione del database. Il campo dbi_maxLogSpaceUsed contiene invece la dimensione massima utilizzata del transaction log.

Purtroppo non esiste moltissima documentazione a riguardo. Direi che la fonte principale rimane ancora la serie di libri Inside SQL Server 200x di Kalen Delaney, dove vengono spiegati molto bene gli internals di SQL Server o il blog di Paul Randal

.

Su Codeplex esiste un custom report (basato sul framework introdotto con la SP2 di SQL Server 2005) che riporta le informazioni sulle partizioni presenti per il database oggetto di analisi: numero di righe per partizione, limiti di ciascuna partizione, informazioni sui filegroups utilizzati.

Ne esiste anche una versione modificata che include anche lo spazio utilizzato/riservato per ciascuna partizione che trovate qui.

Per cercare di chiarire il modello di licensing applicato a SQL Server 2008, Microsoft ha pubblicato la SQL Server 2008 Licensing Guide.

Buona lettura!

Vorrei segnalare la disponibilità delle ultime Cumulative Updates per SQL Server 2008, nelle versioni RTM (build 1812) e con SP1 (build 2723). Le potete trovare qui:

Cumulative Update 3 for SP1:
http://support.microsoft.com/kb/971491

Cumulative Update 6 for RTM:
http://support.microsoft.com/kb/971490

Una sorpresa di SQL Server 2008 Integration Services è il componente Lookup, che è stato riscritto aggiungendo vari miglioramenti, quali ad esempio l’utilizzo di una cache o la diversa gestione dell’output.

SSIS2008_Lookup

E’ infatti possibile scegliere tra:

  • Full cache, che mette l’intero dataset di riferimento in memoria prima di effettuare lookup (efficiente per piccole tabelle)
  • Partial Cache, che prevede il caricamento nella cache delle righe che matchano l’origine dei dati alla prima esecuzione e che alle seguenti richieste sfruttano le informazioni in cache (che può essere opportunamente dimensionata nella pagina delle opzioni avanzate del componente Lookup)
  • No cache.

Nella stessa pagina è possibile ora scegliere come comportarsi con le righe che non matchano con l’origine dei dati, dando così la possibilità di utilizzare tre distinti output: uno per le righe che matchano, uno per quelle che non matchano ed uno per gli eventuali errori.

Joe Chang ha pubblicato oggi un’aggiornamento al suo tool per il monitoraggio delle prestazioni.

http://www.qdpma.com/tools/ExecStats.zip

Il tool sfrutta le DMV dm_exec_query_stats e dm_db_index_usage_stats analysis per catturare le statistiche di utilizzo delle query e degli indici, visualizzandole in formato “umano” :-)

Utilissimo !

Allen White (trainer e consulente SQL Server), ha pubblicato su MSDN questo whitepaper sull’utilizzo di PowerShell in SQL Server 2008.

Da leggere!

Microsoft ha pubblicato un nuovo whitepaper sull’utilizzo del Resource Governor di SQL Server 2008, che consente di monitorare e controllare il modo in cui SQL Server usa CPU e memoria.

Nel documento, di circa 70 pagine, vengono affrontati i temi:

  • Come funziona il Resource Governor works, incluse limitazioni e best practices.
  • Metodologie per costruirsi un piano di consolidamento.
  • Tecniche per prevenire o minimizzare l’impatto di query particolarmente pesanti.
  • Tecniche per rispettare i service level agreements (SLAs), in particolare per quanto riguarda i tempi di risposta e la concorrenza di accesso.
  • Idee per implementare un sistema di addebito dei costi di mantenimento degli SLA.
  • Tecniche per il monitoraggio di SQL Server tramite le nuove funzionalità fornite dal  Resource Governor.

logo-sql08.gif

Come molti sapranno, Windows Azure è la piattaforma per il Cloud Computing che Microsoft sta implementando nei propri data centers per fornire servizi dal web.

The Cloud Computing and Services Platform Diagram

SQL Azure, la piattaforma SQL Server per l’hosting dei dati nel Cloud avrà i seguenti costi:

Web Edition – Up to 1 GB relational database = $9.99 / month

Business Edition – Up to 10 GB relational database = $99.99 / month

Bandwidth = $0.10 in / $0.15 out / GB

Le caratteristiche delle due versioni attualmente disponibili (Web e Business Edition) sono le seguenti:

Web Edition Relational Database includes:

  • Up to 1 GB of T-SQL based relational database
  • Self-managed DB, auto high availability and backup
  • Auto Scale with pay-as-you grow
  • Best suited for Web application, Departmental custom apps.

Business Edition DB includes:

  • Up to 10 GB of T-SQL based relational database
  • Self-managed DB, auto high availability and backup
  • Auto Scale, Pay-as- you grow
  • Additional features in the future like auto-partition, CLR, fanouts etc.
  • Best suited for ISVs packaged LOB apps, Department custom apps

I costi degli altri servizi e le modalità di licensing e pricing li trovate all’indirizzo http://www.microsoft.com/azure/pricing.mspx.

SQL Server ha una serie di impostazioni automatiche che lo rendono uno dei database servers più facili da mantenere. Ciò nonostante, alcune delle opzioni automatiche andrebbero lasciate disattivate, per non incorrere in problemi di performance: ad esempio l’opzione AUTO SHRINK.

Come dice il nome stesso, questa opzione consente al motore di SQL Server di compattare un database quando lo spazio disponibile supera una certa soglia. In questo modo, viene ridotta la dimensione dei files fisici e quindi l’occupazione sul disco.

Attenzione, però! La compattazione di un database può generare una frammentazione negli indici, soprattutto quando questa operazione viene svolta frequentemente. Ne parla in maniera approfondita Paul Randal in questo post. Per questo  motivo l’operazione di shrinking non dovrebbe essere fatta, salvo in scenari in cui lo spazio viene liberato in maniera definitiva (ad esempio con una TRUNCATE o DELETE massiva e senza la reintroduzione della stessa mole di dati). Essendo questa una operazione solitamente rara, è possibile disabilitare l’opzione AUTO SHRINK ed effettuare manualmente lo shrinking del database e la ricostruzione degli indici a seguire.

Lo scorso 23 giugno sono stati pubblicati alcuni aggiornamenti al Service Pack 3 di SQL Server 2005 per Windows 7, tramite Microsoft Update.

Sostanzialmente non è cambiato nulla, se non la logica del sistema di rilevamento della versione di Windows sottostante, adattata per la nuova versione del sistema operativo.

Gli aggiornamenti riguardano i seguenti prodotti:

Nome aggiornamento Windows Update

Microsoft SQL Server 2005 Service Pack 3 (KB955706)

Microsoft SQL Server 2005 Service Pack 3 Failover Clustering (KB955706)

Microsoft SQL Server 2005 Express Edition Service Pack 3 (KB955706)

Si

Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 3 (KB955706)

Si

Microsoft SQL Server 2005 Express Edition Toolkit Service Pack 3 (KB955706)

Si

E’ stato pubblicato da qualche giorno il Refresh 9 della documentazione riguardante SQL Server 2008.

La trovate qui. Per visualizzare l’elenco degli aggiornamenti alla documentazione presenti in questa versione, seguite il topic “New and Updated Topics in SQL Server 2008 Books Online (29 June 2009)".

Alzi la mano chi non ha mai avuto questo problema… Quando si ripristina un database esiste il rischio di ritrovarsi con utenti orfani: presenti cioè nel database, ma inesistenti come login nel server.

Una premessa: SQL Server mantiene le informazioni riguardo alla logins nel database master, associandovi il SID (Security Identifier) di Windows o del dominio Active Directory se parliamo utenti Windows oppure il SID creato e mantenuto da SQL Server stesso nel caso di logins SQL Server. Le informazioni relative agli utenti del database sono mantenute nel database stesso, nel quale sono associati i SID delle logins con i dati dell’utente del db.

Il problema degli utenti orfani si verifica generalmente quando si effettua il ripristino di un backup su un server diverso dall’originale. Anche se nel server di destinazione sono presenti gli stessi utenti del server di origine, cambiando i SID non è possibile a SQL Server collegare le due entità, dando origine ad utenti orfani.

Se vi state chiedendo: “esiste una procedura per fissare gli utenti orfani senza dover cancellare e ricreare gli utenti, perdendo tutte le informazioni sui permessi associati ?”, beh, la risposta è sì.

Esiste una stored procedure che si chiama sp_change_users_login che consente di effettuare un check degli utenti orfani e farsi restituire l’elenco e, con un diverso parametro, fissare il problema "riagganciando” i SID delle logins con gli utenti relativi.

La procedura è la seguente: prima eseguo la query

EXEC sp_change_users_login 'REPORT'

che restituisce l’elenco degli utenti orfani.

UserName UserSID
-------- ----------------------------------- 
Mark 0xD5B5548C6DC81D7773E769631629CE1D

Quindi eseguo la query

EXEC sp_change_users_login 'UPDATE_ONE','Mark','Mark'

per riagganciare utente e login.

Esiste anche una opzione AUTO_FIX che verifica i potenziali orfani ed eventualmente ricrea le logins mancanti, basandosi sul match tra il nome utente ed il nome della login. Personalmente non sono molto favorevole a tutto ciò che è automatico, principalmente perchè in questo caso rischiate di ritrovarvi con login indesiderate o potenzialmente dannose.

Qualche link per approfondire:

BOL SQL Server 2008
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/1554b39f-274b-4ef8-898e-9e246b474333.htm

MSDN:
http://msdn.microsoft.com/it-it/library/ms174378.aspx

E’ uno degli errori più comunemente rilevati nelle applicazioni .NET e riguarda l’esaurimento del pool di connessioni verso il database.

Di solito questo errore si verifica perchè nell’applicazione vengono chiusi gli oggetti usati per leggere o scrivere i dati (ad esempio un DataReader), ma non viene chiusa la corrispondente connessione.

In molte applicazioni mi è capitato di assistere a soluzioni empiriche come aumentare il numero di connessioni disponibili nel pool, ma come è facilmente intuibile non si tratta di una vera e propria soluzione, ma solo un rinvio del problema.

Il messaggio di errore riportato dall’applicazione è il seguente:

.NET 1.1

System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.
This may have occurred because all pooled connections were in use and max pool size was reached.
at System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction)
at System.Data.SqlClient.SqlConnection.Open()

.NET 2.0

System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.
This may have occurred because all pooled connections were in use and max pool size was reached.
     at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()

Il codice per l’accesso ai dati dovrebbe seguire la regola “toccata e fuga”, per cui il blocco di codice apro la connessione/eseguo il comando/chiudo la connessione è il più breve possibile: acquisire una nuova connessione dal pool è un’operazione veloce e poco costosa: è quindi preferibile mantenere la connessione aperta solamente per il tempo necessario all’esecuzione del comando e chiuderla immediatamente dopo.

Un esempio per riprodurre l’errore:

static void Main(string[] args)
{
   string connectionString = @"Data Source=<your server name or address>;Initial Catalog=Northwind;Integrated Security=True; Max Pool Size=20; Connection Timeout=10";

   try
   {
      for (int i = 0; i < 50; i++)
      {
         // Crea la connessione ed il comando da eseguire
         SqlConnection conn = new SqlConnection(connectionString);
         SqlCommand cmd= new SqlCommand("SELECT * FROM Shippers", conn);

         // Apro la connessione
         conn.Open();
  
         // Debug
         Console.WriteLine("Numero di connessioni aperte: {0}", i.ToString());

         // Questa istruzione causa l’errore
         SqlDataReader dr = sCmd.ExecuteReader();

         dr.Close();

         // Soluzione 1: Chiudo la connessione subito dopo la lettura dei dati
         // utilizzando l’opzione CloseConnection del comando ExecuteReader
         //SqlDataReader dr = 
               cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        //dr.Close();
 
        // Soluzione 2: chiudo esplicitamente la connessione
        //conn.Close();
      }

     // Soluzione 3: eseguo tutti i comandi all’interno di un blocco using
     // for (int i = 0; i < 50; i++)
     //{
     //   using (SqlConnection conn = new SqlConnection(connString))
     //   {
     //      SqlCommand cmd= new SqlCommand("SELECT * FROM Shippers", conn);
     //      conn.Open();
     //      Console.WriteLine("Numero di connessioni aperte " + i.ToString());
     //      SqlDataReader sdr = cmd.ExecuteReader();
     //      dr.Close();
     //   }
     //}
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
}

In questo scenario, la connessione viene aperta ed utilizzata per popolare il datareader, ma non viene mai chiusa.
Tra l’altro il pool viene limitato a 20 connessioni con 10 secondi di timeout, mentre il default è di 100 connessioni con 15 secondi di timeout.

Le soluzioni possibili sono tre:

  1. Uso l’opzione CommandBehavior.CloseConnection per chiudere la connessione immediatamente dopo aver letto i dati
  2. Chiudo manualmente la connessione dopo aver terminato la lettura
  3. Racchiudo il blocco di codice per la lettura dei dati all’interno di un blocco using.
    In questo modo si è sicuri che la connessione viene chiusa e distrutto l’oggetto in memoria.

La documentazione riguardo al connection pooling e ad alcuni suggerimenti di programmazione li trovate ai links seguenti:

".NET Framework Class Library - SqlConnection ConnectionString Property "
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

".NET Framework Class Library - CommandBehavior Enumeration"
http://msdn.microsoft.com/en-us/library/system.data.commandbehavior.aspx

"C# Language Reference - using Statement (C# Reference)"
http://msdn.microsoft.com/en-us/library/yh598w02.aspx

"Connection Pooling for the .NET Framework Data Provider for SQL Server"
http://msdn2.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx

"The .NET Connection Pool Lifeguard"
http://msdn2.microsoft.com/en-us/library/aa175863(SQL.80).aspx

ssms_obj-explorer_mathfn-li La ditta WestClinTech ha sviluppato XLeratorDB: una serie di librerie che includono funzioni Excel direttamente in SQL Server. Le funzioni sono raggruppate per categoria e sono acquistabili separatamente (nella foto le funzioni matematiche della libreria XLeleratorDB/Math disponibili direttamente da SSMS).

E’ possibile scaricarne una versione trial direttamente dal sito della WestClinTech.

Microsoft ha pubblicato un aggiornamento dei Books Online di SQL Server 2008.

Lo trovate qui:
http://www.microsoft.com/downloads/details.aspx?FamilyID=765433f7-0983-4d7a-b628-0a98145bcb97

 

sqlserver

Beh, non proprio... Però mi sono capitate poche occasioni finora di vedere dell'hardware dedicato a SQL Server così ben fornito.

Lo scorso 28 ottobre il SQL Server Release Services Team ha annunciato la disponibilità della CTP del Service Pack 3 di SQL Server 2005.
Lo potete scaricare qui.

Ultimamente mi sto occupando sempre più spesso di Sharepoint, sia per lavoro che per "diletto". Uno degli aspetti con cui ho frequentemente ha che fare, da buon DBA :-), è la deframmentazione dei databases di Sharepoint.

Questo articolo della KB di Microsoft riporta un utilissimo script per verificare lo stato di frammentazione degli indici e pilotare la ricostruzione degli stessi.

Spesso mi capita durante i corsi su Sql Server Integration Services di fornire links a materiale online. Dal momento che puntualmente dimentico i links più interessanti, questa volta li memorizzo in questa pagina, che di tanto in tanto aggiornerò con altri links.. Stay tuned !

Jamie Thomson ha pubblicato un modello di template per la realizzazione di nuovi packages SSIS.

L'idea di base è quella di stabilire una serie di caratteristiche comuni per lo sviluppo dei packages e le modalità di deployment, configurazione e logging.

Il template va scompattato in questa directory:

%ProgramFiles%\Microsoft Visual Studio 8\Common7 \IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems

In questo modo cliccando su "Add New Item..." il nostro template sarà subito disponibile:

TemplatePkg

Una delle decisioni che gli sviluppatori di soluzioni basate su SSIS devono prendere è dove effettuare il deployment dei propri package ? Salvare i packages su file system o in SQL Server ?

In questi due articoli, due dei maggiori esperti di SSIS, Kirk Haselden e Jamie Thomson, spiegano i propri punti di vista a riguardo.

Da segnalare il post di Sam Loud sulle problematiche del deployment su file system che, in certe condizioni, richiede l'utilizzo di più connection managers.

Aaron Bertrand ha mantenuto a questo indirizzo la lista dei rilasci di SQL Server 2000, mentre a questo indirizzo trovate quella di SQL Server 2005.

Microsoft ha rilasciato una lista parziale dei rilasci a partire dal Service Pack 2. La trovate qui.

UPDATE: qui trovate la build list per SQL Server 2008. Grazie Steve.

Vorrei segnalarvi un paio di tools per SQL Server 2008:

  • QPee Tools 1.0
    Collezione di tools per loggare le informazioni sui piani di esecuzione, identificare problemi di prestazioni dovuti a plan regressions. Utilizzano le nuove funzionalità query_hash e query_plan_hash introdotte in SQL Server 2008, combinate con le dynamic management views e le funzioni di sistema.
  • Simple SQL Server Database Schema Printer (ASP.NET)
    E' una pagina ASP.NET che estrae da un database tutte le tabelle, i nomi delle colonne, i relativi tipi dati ed altre informazioni, presentandole sotto forma di pagina web.

Enjoy it !

Kimberly Tripp, una delle maggiori esperte di SQL Server, ha pubblicato la versione aggiornata e bug-fixed della stored procedure sp_helpindex2, sia per SQL Server 2005 che per il 2008.

Potete scaricare le due versioni qui (2005) e qui (2008).

Un database non correttamente disegnato o un server configurato in maniera errata risultano spesso in un decadimento delle prestazioni di SQL Server.
Mi è capitato spesso di vedere database progettati male che, sviluppati con test fatti su poche migliaia di records, vengono poi messi "in ginocchio" una volta passati in produzione, dove i records magari sono qualche milione. O ancora server con svariati gigabytes di memoria non utilizzata per una errata configurazione del server.

Questo articolo su Technet spiega come ricercare e risolvere eventuali problemi di prestazioni in un sistema basato su SQL Server 2005.

Oltre ai recenti rilasci delle versioni "core" di SQL Server 2008 Express, sono stati rilasciati ufficialmente anche SQL Server 2008 Express with Advanced Services ed il nuovo SQL Server 2008 with Tools. Una delle principali differenze è l'inclusione in entrambe le edizioni della versione Basic di SQL Server Management Studio, la versione ridotta di SSMS che consente la creazione e modifica visuale dei databases. SQL Server 2008 with Advanced Services include anche funzionalità aggiuntive per Full-Text Search e Reporting Services.

Qualche link a documentazione e tools per SQL Server 2008:

Una delle "mancanze" della versione definitiva di SQL Server 2008 è il Report Builder, arrivato alla versione 2.0 ed attualmente in versione RC1.

Può essere scaricato qui.

Come riporta il sito:

Microsoft SQL Server 2008 Reporting Services Report Builder 2.0 supports the full capabilities of SQL Server 2008 Reporting Services including flexibile report layout, data visualizations and richly formatted text. The download includes the following functionality above the RC0 release of Report Builder:

  • Easy to use wizards for creating table, matrix and chart data regions.
  • Support for directly opening and editing reports stored on the report server.
  • Support for using server resources such as shared data sources.
  • A query designer for Microsoft SQL Server data sources.
  • Enhancements to the Report Builder 2.0 ribbon.

Questa versione dovrebbe essere pienamente compatibile con la RTM di SQL Server 2008.

La scorsa settimana Microsoft ha pubblicato questo documento riguardante le modifiche alle politiche di licensing, rimuovendo in particolare il vincolo dei 90 giorni necessari per riassegnare una licenza ad un server dopo averla spostata all'interno della propria server farm. Tutte le licenze Microsoft sono assegnate ad un server fisico, pertanto se una macchina virtuale viene spostata su un server privo della licenza per il sistema operativo o l'applicazione installata, per Microsoft si tratta di un trasferimento di licenza. Con le precedenti limitazioni imposte dalle politiche di licensing introdotte nel 2005, per riassegnare tale licenza su un altro host fisico dovevano trascorrere almeno 90 giorni, con effetti evidentemente catastrofici sulla virtualizzazione e sulla migrazione a caldo.

Facciamo un esempio: se abbiamo tre macchine virtuali con SQL Server 2005 in una server farm VMWare fatta di otto server fisici, per effetto delle precedenti politiche di licenza avremmo dovuto acquistare 24 licenze di SQL Server 2005 Standard Edition (3 x 8) !!!
In alternativa avremmo potuto acquistare otto licenze SQL Server 2005 Enterprise Edition, che consentono un numero illimitato di macchine virtuali in esecuzione su uno stesso host fisico.

Con l'attuale modifica fatta al licensing acquisteremo solamente tre licenze di SQL Server, liberamente trasferibili tra i nodi del cluster VMWare senza limitazioni e con un impatto finanziario decisamente più basso.

 

Con il Service Pack 2 di SQL Server 2005 Microsoft ha introdotto la possibilità per i DBA di utilizzare reports personalizzati. Questa feature è disponibile cliccando con il tasto destro del mouse su un oggetto dell'object explorer (ad esempio il database o la singola tabella) e quindi sulla voce Reports

object_explorer  

Microsoft ha inoltre rilasciato un tool, denominato Performance Dashboard (scaricabile qui: http://www.microsoft.com/downloads/details.aspx?FamilyId=1d3a4a0d-7e0c-4730-8204-e419218c1efc&displaylang=en) che definisce una serie di reports i quali forniscono indicazioni sulle performance del vostro SQL Server utilizzando le dynamic management views (DMVs).
Attenzione: i reports funzionano solamente se è installato il Service Pack 2 di SQL Server 2005.

Attraverso i custom reports di Performance Dashboard sono disponibili, come recita il sito web sopra citato:

Common performance problems that the dashboard reports may help to resolve include:

  • CPU bottlenecks (and what queries are consuming the most CPU)
  • IO bottlenecks (and what queries are performing the most IO)
  • Index recommendations generated by the query optimizer (missing indexes)
  • Blocking
  • Latch contention

Una volta installato il package .msi scaricato dal suddetto link, occorre entrare in SQL Server Management Studio ed aprire il file C:\Program Files\Microsoft SQL Server\90\Tools\PerformanceDashboard\setup.sql. Eseguite questo script per creare nell'msdb tutte le stored procedures che servono ai reports per la visualizzazione delle informazioni di performance.

A questo punto, cliccando nuovamente con il tasto destro su Custom Reports viene aperta la seguente schermata, dalla quale potete lanciare il report principale, Performance_Dashboard_Main e dal quale poi vengono aperti tutti gli altri reports. 

open_file

Prima di eseguire il report, SSMS vi avvisa che gli script eseguiti dal custom report potrebbero essere pericolosi. Cliccate su Run per proseguire. 

run_custom_report

Ecco quello che si presenta all'esecuzione del report: 

performance_dashboard_main  

Cliccando poi sui vari links presenti vengono di volta in volta richiamati i reports di dettaglio sulle statistiche di IO, sui waits, sulle performance per CPU, Letture e scritture, etc.

N.B. Il Performance Dashboard viene sostituito in SQL Server 2008 dalle funzionalità del Performance Studio e pertanto non verrà più mantenuto da Microsoft.

Recentemente mi è capitato di dover eliminare tutti i caratteri non numerici da una colonna all'interno di un data flow SSIS. Ovviamente ci sono molti modi possibili per farlo, ma l'utilizzo delle regular expression è risultato essere il modo più veloce...

Per utilizzare le RegEx all'interno di un data flow occorre scaricare il componente per la trasformazione dall'indirizzo http://www.microsoft.com/downloads/details.aspx?FamilyID=c16f11ad-150a-4091-b3a2-83d21d3e0973&displaylang=en
oppure utilizzare lo Script Component di SSIS. Vediamo un esempio di come usare quest'ultimo.

Per prima cosa trascinare lo Script Component all'interno del data flow e scegliere Transform per determinarne il comportamento, scegliere le colonne da passare allo script in ReadWrite.
Cliccare su Design Script ed aggiungere il codice seguente nell'area Imports:

Imports System.Text.RegularExpressions

quindi il codice seguente al posto della subroutine Input0_ProcessInputRow:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

    If Row.CodiceProdotto_IsNull = False Or Row.CodiceProdotto = "" Then

        Dim pattern As String = String.Empty

        Dim r As Regex = Nothing

        pattern = "[^0-9]"

        r = New Regex(pattern, RegexOptions.Compiled)

        Row.CodiceProdotto = Regex.Replace(Row. CodiceProdotto , pattern, "")
    End If

End Sub

In questo modo, utilizzando poche righe di codice, si riesce a risolvere un problema abbastanza comune in maniera davvero semplice.

Alla prossima !


Il 6 Agosto scorso Microsoft ha ufficializzato, durante la keynote al Teched Sudafrica, la disponibilità di SQL Server 2008 in versione definitiva.

E' già possibile scaricarlo, per gli abbonati, dai siti MSDN e licensing.

Il Flat File Connection Manager tratta ogni nuova colonna per default come stringa di 50 caratteri. Questo può comportare dei problemi quando la colonna della tabella SQL Server ha un tipo dati intero o di lunghezza superiore a 50 caratteri, ad esempio.
La pagina Advanced della configurazione del connection manager consente di modificare il tipo dati della colonna, trasformandola nel tipo dati corretto.
Fate in modo di definire il tipo dati di una colonna come il più piccolo possibile per le informazioni che state trattando. Ad esempio, se il valore da trattare rappresenta il codice fiscale di un individuo, definite la colonna come stringa di 16 caratteri, risparmiando così 34 bytes in memoria moltiplicati per il numero di righe che state trattando !

Di seguito la tabella con la mappatura dei tipi dati SQL Server più comuni  e l'equivalente gestito dal Flat File Connection Manager.

SQL Server Data Type Flat File Connection Manager Data Type
bigint eight-byte signed integer [DT_I8]
binary byte stream [DT_BYTES]
Bit Boolean [DT_BOOL]
Date single-byte unsigned integer [DT_UI1]
Datetime database timestamp [DT_DBTIMESTAMP]
Decimal numeric [DT_NUMERIC]
Float float [DT_R4]
Int four-byte signed integer [DT_I4]
Image image [DT_IMAGE]
Nvarchar or nchar Unicode string [DT_WSTR]
ntext Unicode text stream [DT_NTEXT]
Numeric numeric [DT_NUMERIC]
Smallint two-byte signed integer [DT_I2]
Text text stream [DT_TEXT]
Timestamp byte stream [DT_BYTES]
Tinytint single-byte unsigned integer [DT_UI1]
Uniqueidentifier unique identifier [DT_GUID]
Varbinary byte stream [DT_BYTES]
Varchar or char string [DT_STR]
Xml Unicode string [DT_WSTR]

Chi sono

  • Danilo Dominici
  • Send mail to the author(s) Email
  • Skype
  • View my profile on LinkedIn

Tags

Calendario

<2017 December>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

Archivio posts

Blog che leggo

Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.

Statistiche

Total Posts: 139
This Year: 0
This Month: 0
This Week: 0
Comments: 30