Andrea Benedetti Blog

  • Un altro anno di conferenze

    L’anno delle conferenze non va di pari passo, almeno per me e per chi fa un mestiere simile al mio, con l’anno solare. Ormai prossimi all’estate (se arriva ...) sono ormai arrivato alla chiusura della parte “speaker” del...
  • Caricamenti massivi e best practices. L’ordine corretto delle cose

    In scenari di caricamenti massivi la best practice è sempre una, detta e ridetta: DROP indici caricamento massivo CREATE indici Bene. Ora la domanda è: in che ordine eseguo le singole operazioni? Intendo dire: Supponendo che la mia tabella abbia sia un...
  • SQL Server Restart time

    Trovo spesso l’esigenza di verificare quando un’istanza è stata riavviata (o startata). SQL Server consente di recuperare questa informazione in diversi modi. La cosa interessante è che ciascuno di essi non ritorna lo stesso medesimo istante perché ognuno...
  • Merry (Power) Christmas :-)

  • Di SQL Server, statistiche e piani di esecuzione

    SQL Server utilizza le statistiche per reagire in maniera intelligente alle istruzioni che riceve. Conoscendo il numero di righe, la densità delle pagine, gli indici disponibili, l’ optimizer è in grado di ragionare in maniera più accurata circa la strada...
  • [T-SQL] Insert dummy and test data in tables

    Lavorando con applicazioni database mi rendo conto che c’è una fase importantissima che troppo spesso viene trascurata: il test delle performance sui presunti carichi che si dovranno sostenere. Mi spiego con una domanda: qual 'è il senso di testare le...
  • [Reporting Services] Generate single PDF from multiple PDF

    Reporting Services , la piattaforma di presentazione delle informazioni di SQL Server, consente, tra i vari formati disponibili , di estrarre report in formato PDF . In scenari in cui vengono sviluppati molti report, può nascere (e spesso nasce) la necessità...
  • Happy (SQL) Christmas !!!

      SET NOCOUNT ON ; DECLARE @level smallint = 10 ; DECLARE @i tinyint = 1 DECLARE @Offset smallint = 10 ; DECLARE @x1 smallint = 100 ; DECLARE @y1 smallint = 100 ; DECLARE @x2 smallint = 150 ; DECLARE @y2 smallint = 100 ; DECLARE ...
  • Insert dummy data in tables with relationship

    Torno spesso sull’argomento relativo ai test di carico / performance dei database e sull’importanza di poter profilare l’utilizzo che avranno con una mole di dati quantomeno simile allo scenario di produzione. Diventa importante, quindi, avere un qualsivoglia...
  • SQL Server 2014: my TOP 5 favorite features

    Ogni volta che una nuova versione di SQL Server sta per essere rilasciata, mi diverto a fare la classifica delle nuove caratteristiche che, per me, valgono da sole il prezzo del biglietto. Da qualche giorno è disponibile la Community Technology Preview...
  • Happy easter with a TSQL egg :-)

    Non essendo capace a fare un uovo di cioccolato, mi sono limitato a costruirlo con il tipo geometry :-)   DECLARE @x AS float = - 1.5 ; DECLARE @tTable TABLE ( geo geometry ); WHILE @x < 1.5 BEGIN INSERT INTO @tTable SELECT geometry...
  • Auto generate database copy with backup and restore

    Vedo spesso la necessità di poter disporre di un database “copia”, per attività di controllo, verifica, reportistica, … In pratica, risolvere la necessità di costruire al volo e dinamicamente una copia del database, “accanto” a quello operazionale. Per...
  • Analytic functions, LAG, running total, cursor, SQLCLR, …

    Qualche anno fa (sono quasi 5 !!!) scrivevo di cursori, complessità lineari, complessità esponenziali, SQLCLR, … qui e qui . Nei due post del blog analizzavo alcune possibili soluzioni (con cursore, con subquery senza cursore, con un’implementazione SQLCLR...
  • Thinking about Data Compression

    Nell’ultimo post, qui , ho parlato di come poter comprimere i dati, tramite SQLCLR , per quelle colonne che contengono informazioni che non possono essere compresse con gli strumenti nativi che SQL Server, dalla versione 2008 nelle edizioni Enterprise...
  • E i DECIMAL con scala a 0 ?

    Inizio con una domanda, non me ne vogliate. Chi di voi ha mai visto / creato colonne di tipo DECIMAL con scala uguale a 0?   Intendo dire qualcosa come: CREATE TABLE myTable ( ... myColumn DECIMAL ( 3 , 0 ) , ... );   ...
  • Data Compression, data pages, XML & SQLCLR

    Chiunque si occupi di database sa, è evidente, che la loro dimensione aumenta nel tempo. Aumentano i dati, quindi gli indici, quindi lo storage necessario, quindi le dimensioni dei backup, quindi i tempi di manutenzione, quindi … A partire dalla versione...
  • Stored Procedure e DROP esplicito delle tabelle temporanee

    Nelle attività di performance tuning sono molti i “dettagli” che possono aiutare a guadagnare tempo prezioso. Anche poco, d’accordo, ma sempre di un risparmio si tratta.   Un esempio: se trovo, all’interno di una stored procedure, una DROP di una...
  • Analysis Services: automatic server-side trace

    Il modo migliore per monitorare nel tempo l’utilizzo dei nostri database è utilizzare il SQL Server Profiler e registrare gli eventi che riteniamo migliori per la nostra analisi. Per avere il minimo impatto sui sistemi è sempre consigliabile utilizzare...
  • NVarchar(4000) vs. NVarchar(x). O anche: “Ti piace vincere facile?”

    Certo il titolo non è dei più chiari, però correggo subito la domanda con la risposta (provocatoria): “ Ti piace perdere facile! ”. Vengo allo scenario. Ogni colonna all’interno del database, che andrà a contenere del testo, viene modellata come NVarchar...
  • Talking About IDENTITY Columns

    La proprietà IDENTITY viene spesso utilizzata per quelle tabelle che hanno la necessità di avere, per ogni riga, un valore univoco. Il database engine ci solleva, così, dall’onere di verificare ed attribuire un valore che non sia già stato utilizzato...
  • Stored procedure & metadata

    Può capitare la necessità di conoscere, a runtime, lo schema (i metadati) del resultset uscente da una stored procedure. Recuperare queste informazioni può essere utile, ad esempio, in tutti quegli scenari in cui lo schema varia al variare del codice...
  • Dei decimal e dei bytes regalati…

    Mi chiedo quale sia il senso di definire, sulla struttura di una tabella, una colonna DECIMAL (3,0). Sostanzialmente un attributo in grado di memorizzare cifre comprese tra -999 e 999.   La domanda, che dovrebbe guidare ogni scelta in fase di modellazione...
  • Database fine tuning. Talking about duplicate statistics

    Continuo, anche in questo post, i ragionamenti relativi al fine tuning dei nostri database. Quindi a tutte quelle operazioni che possono apportare delle migliorie in termini di performance (sono solo operazionali, ma anche di manutenzione, di backup ...
  • Autogrow come il cortisone

    Iniziamo bene: come il cortisone anche l’autogrow salva la vita. Ma, come per il cortisone, è il caso di non abusarne ma, piuttosto, di utilizzarlo solo quando non se ne può fare a meno.   L’inizio del post è un pò “farmaceutico” ok, ma credo che...
  • Tempdb, data files & performance

    Un’istanza SQL Server ha un solo tempdb e, per questo e per il fatto che molte attività lo possono utilizzare in maniera intensiva, potrebbe diventare un collo di bottiglia. Per verificare problemi di performance posso iniziare controllando la contesa...