Script

Unit testing: Come scrivere la tua prima unit test!

Sergio Govoni

Nell’articolo precedente, il secondo di questa serie, abbiamo descritto come installare il framework tSQLt, il tool SQL Test di Red-Gate e come avviene l’esecuzione di una unit di test. Ora è giunto il momento di scrivere il nostro primo test! Useremo gli strumenti che abbiamo descritto in precedenza!

Specifiche e requisiti

Scriveremo la nostra prima unit di test per verificare i requisiti di un trigger che ci è stato commissionato dall’Azienda inventata Adventure Works LTD il cui database è disponibile per il download su questo repository di GitHub. Il database AdventureWorks2017 contiene la tabella Product riferita allo schema Production. La tabella Product rappresenta l’anagrafica dei prodotti gestiti e commercializzati dall’Azienda che vi ha commissionato un trigger per impedire l’inserimento di nuovi prodotti aventi come “scorta di sicurezza” valori minori di 10. L’Azienda desidera quindi avere sempre una scorta di magazzino pari a 10 unità. La scorta di sicurezza è un dato molto importante per le procedure automatiche di riordino dei materiali, che ne tengono conto per l’emissione degli ordini a fornitore o degli ordini di produzione. Per semplificare l’esempio, il trigger risponderà soltanto all’evento OnInsert, per i comandi INSERT.

Barcode check digit calculator for SQL Server and Azure SQL DB

Sergio Govoni

Chi ha avuto l’opportunità di sviluppare applicazioni per trasportare i prodotti da un luogo ad un altro, ha appreso che per gestire in modo efficiente la movimentazione delle merci all’interno di un magazzino è necessario adottare un sistema di movimentazione basato su codici a barre.

Il codice a barre è la rappresentazione grafica di una sequenza di numeri e altri simboli. La rappresentazione consiste di linee (barre) e spazi. Un codice a barre è tipicamente composto da cinque parti, una di queste è la cifra di controllo, nota anche come check digit. L’algoritmo di calcolo della cifra di controllo è descritto in questa pagina del sito di GS1, l’associazione internazionale che si occupa di diffondere gli standard progettati per migliorare l’efficienza della filiera domanda-offerta, tra questi c’è anche lo standard relativo ai codici a barre. In questo articolo abbiamo descritto una possibile implementazione dell’algoritmo di calcolo della cifra di controllo in TSQL, in quell’occasione abbiamo trattato il calcolo del check digit per un barcode EAN13. Recentemente, ho avuto l’occasione di migliorare la soluzione implementando le funzioni mancanti che permettono di calcolare il check digit per i seguenti tipi di barcode:

sp_alter_column - La stored procedure per modificare una colonna!

Sergio Govoni

Introduzione

Sarà successo anche a voi di dover modificare il tipo di dato di una colonna presente da tempo in una tabella di un database SQL Server e probabilmente vi sarete scontrati con l’errore 5074 che segnala l’impossibilità di modificare la colonna a causa della presenza di oggetti collegati come Primary Key, Foreign Key, Indici, Vincoli (di univocità e non), Statistiche, ecc..

Ecco un esempio dell’errore 5074:

Msg 5074, Level 16, State 1, Line 1135 - The object 'objectname' is dependent on column 'Columnname'.

Statistiche di utilizzo e performance delle viste in un database SQL Server

Sergio Govoni

Le performance di una soluzione database sono spesso oggetto di diatriba tra chi fornisce la soluzione e chi la personalizza. Scrivere codice T-SQL ottimizzato, in grado di scalare all’aumentare dei dati e degli utenti, non è affatto semplice e quando la complessità aumenta, le attività di manutenzione del codice diventano difficili da attuare anche per l’autore stesso.

In questo articolo, condivido la metodologia di tuning e alcuni script che utilizzo per ottenere informazioni sulle performance delle query che utilizzano le viste presenti nel database oggetto dell’analisi. La presenza di viste nidificate contenenti query non ottimizzate può diventare oggetto di analisi specifica, gli script contenuti in questo articolo hanno l’obiettivo di fornire alcuni indicatori sull’utilizzo e sulle performance delle viste di un DB.

Esempi di SQL Graph Database su GitHub

Sergio Govoni

SQL Server offre da sempre gli strumenti per gestire i dati gerarchici e le relazioni tra le entità. A volte, però, le relazioni tra le entità possono diventare complesse. Pensiamo ad una relazione molti-a-molti, i database relazionali non dispongono di soluzioni native per questo tipo di legame, che viene comunemente implementato con una tabella di associazione.

SQL Server 2017, grazie all’introduzione di Graph Database, permette di esprimere certi tipi di query più facilmente rispetto ad un database relazionale puro.