Tips-Tricks

TOP(n) WITH TIES, nuova feature? No, é sempre esistita!

Pasquale Ceglie

C’è ancora chi si meraviglia davanti all’opzione WITH TIES.

Molti non sanno che esiste o ne sottovalutano l’utilità.

Consideriamo la query

SELECT TOP 3 Name, ListPrice
FROM SalesLT.Product
ORDER BY ListPrice ASC;

Questa query ritornerà i primi 3 articoli ordinati per ListPrice crescente.

L’opzione WITH TIES indica che, invece di restituire solo il numero richiesto di righe, la query restituirà anche tutte le righe aventi lo stesso valore dell’ultima riga in base ai criteri di ordinamento (ListPrice, nel nostro caso). Questo significa che si potrebbero ottenere più righe rispetto a quelle richieste, ma la selezione delle righe diventa di tipo deterministico (al contrario del caso precedente).

Uso "nascosto" del tempdb

Luca Bruni

Qualche settimana fa, mentre ero al lavoro, mi sono ritrovato a dover risolvere un problema apparentemente non molto strano, ma che tuttavia nasconde qualche retroscena interessante. I fatti sono stati più o meno questi:

Circa a metà mattinata mi è stato segnalato un problema di prestazioni su uno dei sistemi che abbiamo in gestione nel nostro team di lavoro; dopo alcuni semplici controlli è stato subito chiaro che il rallentamento era sostanzialmente dovuto ad un problema di contency sul tempdb. “Beh.. abbastanza semplice!” - ho subito pensato! - “la colpa è mia perché (ahi ahi ahi) non ho ancora fatto lo split del file dati sul tempdb!”.

"SQL Server Management Studio ha smesso di funzionare", ho perso lo script che stavo scrivendo?

Emanuele Zanchettin

“SQL Server Management Studio ha smesso di funzionare”, a volte succede di ottenere a video questo messaggio poco simpatico.

Management Studio crashed 1

Nulla di grave, “basta solo” riavviare il programma.

Management Studio crashed 2

Ed ecco che una volta riavviato SSMS alcun file è stato recuperato … GRRRRRR!!!!

La cosa meno divertente, quindi, è scoprire che la query/procedura che si stava scrivendo e provando, magari da qualche ora, è andata persa. Ovvero perse le ultime modifiche non salvate .. come dici!? non hai salvato lo script SQL prima di eseguirlo!? Ahhh, non hai proprio salvato nemmeno una volta!?

SQLServer 2016 non si avvia ... ecco uno dei perchè

Emanuele Zanchettin

TCP Provider, error: 0 - Il computer remoto ha rifiutato la connessione di rete. Microsoft SQL Server, Error: 1225” questo semplice e significativo messaggio ci avvisa che il Server SQL, col quale stiamo cercando di collergarci, non risponde. Ci possono essere molteplici motivi di questo “disservizio”, in questo articolo viene illustrata una delle cause e la sua risoluzione.

JSON support is generally available in Azure SQL Database

Emanuele Zanchettin

Generalmente disponibile il supporto JSON per Azure SQL Database

Azure Blog post

MSDN Blog post

I nuovi database creati in Azure SQL Database hanno di Default il Compatibility Level 130, i database creati da qualche tempo hanno invece Default il Compatibility Level 120.

Per controllare il compatibility level corrente SELECT name, compatibility_level FROM sys.databases WHERE name = 'database_name';

Usare json su SQLServer 2005, 2008, 2012 e 2014 .. è possibile!

Vedere il supporto nativo di JSON su SQLServer 2016 (e anche su Azure SQLDatabase) mi ha fatto pensare che magari era possibile averlo in forma semplificata anche su versioni precedenti.

Tutto è nato dalla necessità di gestire un flusso di dati con una Stored Procedure in arrivo da una WebAPI. Inizialmente la WebAPI, dopo aver fatto gli opportuni controlli logici di validità, deserializzava il flusso per poi formattare una stringa da passare alla Stored Procedure. La gestione del parametro in ingresso alla SP come TABLE non sembrava possibile utilizzando EF6, quindi si è optato di mantenere la SP nello stato originale, ovvero con la stringa e altri parametri per i caratteri separatori.