Andrea Benedetti Blog

  • SQLCLR, SSMS messages, SET Statistics IO

    Le informazioni che SQL Server invia sulla finestra dei messaggi del Management Studio non sono direttamente catturabili. Questo significa che non è possibile, in maniera nativa, sfruttare qualche meccanismo per recuperare queste informazioni e, ad esempio...
  • 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...
  • 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 ) , ... );   ...
  • 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...
  • 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 ...
  • 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...
  • 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...
  • 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...
  • 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...
  • [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 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...
  • [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...
  • Datawarehouse: Maximum CPU Consumption Rate (MCR)

    Nella definizione e nel disegno di un’ architettura SQL Server , per una corretta valutazione dell’ hardware , ci sono molte metriche da tenere in considerazione. Studiando un’architettura dedicata al datawarehouse (rispetto a sistemi dedicati ad applicazioni...
  • 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...
  • Safely empty or fill tables without violating any foreign key relationship

    Le relazioni tra le tabelle di un database sono il meccanismo necessario a garantire l’integrità del dato. Una tabella “figlia” non potrà, se opportunamente relazionata, contenere righe che possano legarsi a righe NON esistenti sulla tabella “padre” ...
  • Update data on the fly

    Prendete un datawarehouse abbastanza complesso, con decine di tabelle dei fatti strutturate secondo una modellazione ben precisa: tutte le tabelle (dei fatti) si chiamano “fact_…” tutte le chiavi si chiamano “ID…” (per renderla semplice in questo post...
  • 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...
  • Nuova casa per il blog

    Cambio di casa per il mio blog. Dall’accogliente villa di UGISS , la community italiana di SQL Server, al palazzo di TechNet . Da oggi mi potete trovare qui . Solo un cambio di indirizzo insomma
  • Aumento automatico file & Trace Flag. To be or not to be…

    Le dimensioni dei file database di SQL Server possono aumentare automaticamente rispetto ai valori originari. Grazie a questa caratteristicha, prima che lo spazio assegnato al file si esaurisca, le sue dimensioni possono aumentare in maniera automatica...
  • T-Log e numero di file e …

    … installazioni che hanno database con diversi file dati e… diversi Transaction Log. Se ha sicuramente e sempre senso avere più file dati (e magari ne parleremo in maniera approfondita in un altro post), NON ha alcun senso avere più di un T-Log. Questo...
  • 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...
  • SQL Server 2012 SP1 CTP4 Now Available

    Come da titolo ;-) Consiglio di partire dal blog del team di SQL Server, qui .
  • 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...
  • 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...