Andrea Benedetti Blog

  • 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...
  • 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...
  • Power Query: join on inequality operator

    In TSQL it’s so easy to create a JOIN with inequality operators like that: SELECT * FROM Table1 JOIN Table2 ON Table1 . code = Table2 . code AND ( Table1 . MESERIF_ST >= Table2 . Month_Start ) AND ( Table1 . MESERIF_ST <= Table2 . Month_End...
  • [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...
  • Happy New Year :)

    USE MASTER GO ALTER DATABASE @anBenedetti SET OFFLINE WITH ROLLBACK IMMEDIATE GO #SQLServer #SQLFamily #HappyNewYear — Andrea Benedetti (@anBenedetti) 30 Dicembre 2014
  • 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...
  • 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...
  • [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à...
  • 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 :-)

  • 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 ...
  • 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...
  • 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...
  • 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...
  • 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...
  • 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...
  • 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 ) , ... );   ...
  • 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...
  • 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 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...
  • Treni senza macchinista (divagazioni sull’autodifesa di un database)

    Da molti anni sbandiero a destra e sinistra (e anche al centro, visto il periodo elettorale è meglio usare la par-condicio) la mia idea: un database deve essere in grado di proteggersi da solo . Che cosa significa? Significa che, qualsiasi siano le mani...
  • 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...
  • Monitoring Reporting Services Performance

    A partire dal SQL Server 2008 R2, fare analisi sulle performance dei reporting services è diventato ancora più semplice con l’aggiunta, all’interno del database ReportServer (o ReportServer$<nome istanza> ), della vista [ExecutionLog3]. In questa...
  • 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...
  • 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...