Sql-Server

Agenda di SQL Start 2025!

Sergio Govoni

SQL Start è l’evento community dedicato a chi lavora ogni giorno con la Data Platform di Microsoft, sia on-premise che nel cloud Azure. Una giornata di formazione tecnica, completamente gratuita, pensata per professionisti, sviluppatori, DBA, data engineer e appassionati di dati.

Ospitato nelle aule della Facoltà di Ingegneria dell’Università Politecnica delle Marche si terrà in presenza in Ancona, il 13 giugno 2025. Scopri la sede dell’evento.

L’agenda 2025 in breve

Quest’anno vi aspettano 4 track parallele per un totale di 20 ore di contenuti tecnici su:

Unicità condizionata, NULL e ANSI_NULLS: Soluzioni T-SQL senza trigger

Sergio Govoni

Recentemente mi sono trovato ad affrontare un caso interessante relativo alla gestione di un vincolo UNIQUE con alcune particolarità su una tabella di un database SQL Server. La richiesta è stata quella controllare che i valori inseriti o modificati in una colonna siano unici, permettendo però NULL multipli.

Consideriamo, a titolo di esempio semplificato, lo schema della tabella dbo.EmailTable. La tabella memorizza alcuni attributi di una anagrafica contatti tra cui il Nome, il Cognome e l’Email. L’attributo Email non è obbligatorio ma quando presente deve essere univoco. L’assenza dell’attributo viene gestita con un NULL.

SQL Start 2025 – Save the date!

Sergio Govoni

SQL Start è un evento community di una giornata, completamente gratuito, per i professionisti che lavorano con i dati!

Focalizzato sulla Data Platform di Microsoft e sulle tecnologie ad esso correlate, anche quest’anno si svolgerà nella sua sede storica, l’Università Politecnica delle Marche (Facoltà di Ingegneria), venerdì 13 giugno 2025.

Partecipando, potrai interagire con professionisti, MVP di SQL Server e di Microsoft Azure, esperti del settore IT e colleghi con i quali potrai:

Deadlock in SQL Server: Come funzionano e come evitarli!

Sergio Govoni

I deadlock in SQL Server e Azure SQL possono rappresentare un problema significativo per le prestazioni e quando si presentano diventano presto motivo di discordia tra chi fornisce la soluzione database e chi la personalizza.

Prima di dare la definizione di deadlock esaminiamo le differenze tra lock e deadlock; quest’ultimo viene spesso confuso con il normale lock, ma sono due concetti distinti.

Quando una transazione T2 richiede un lock su una risorsa già bloccata da un’altra transazione T1, la transazione T2 entra in attesa e vi rimane finché il lock acquisito dalla transazione T1 non viene rilasciato. In questo caso, la transazione T2 è bloccata, ma non si tratta di un deadlock. Un deadlock si verifica solo quando due o più transazioni si bloccano reciprocamente, impedendo l’avanzamento di ciascuna di esse. I deadlock vengono risolti quasi immediatamente, l’Engine li rileva automaticamente e termina una delle transazioni coinvolte per sbloccare la situazione. Il lock, invece, può teoricamente durare all’infinito. By default, le transazioni in SQL Server e Azure SQL non hanno un timeout e rimangono in attesa potenzialmente all’infinito, a meno che non venga impostato un timeout con l’opzione LOCK_TIMEOUT o non intervenga manualmente un DBA.

Piani di manutenzione: Strategie per proteggere e ottimizzare i tuoi database!

Sergio Govoni

In questo articolo tratteremo i task fondamentali che un piano di manutenzione per database SQL Server deve avere. Esploreremo il significato di alcune impostazioni di default e la possibilità di arricchire il task di backup database con un task di tipo T-SQL script in grado di testare il ripristino del database archiviato. Dettagli aggiuntivi sono disponibili nella documentazione SQL Server Maintenance plans.

Un piano di manutenzione database è un insieme di attività specifiche e proattive che devono essere eseguite regolarmente sui database di una istanza SQL Server o Azure SQL per garantirne il corretto funzionamento, performance adeguate, e disponibilità. I piani di manutenzione creano un flusso di lavoro che organizza le attività necessarie a garantire che il database sia ottimizzato, sottoposto regolarmente a backup e consistente.