Andrea Benedetti Blog

  • 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...
  • 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...
  • 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...
  • Merry (Power) Christmas :-)

  • 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 ) , ... );   ...
  • 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...
  • 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...
  • 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...
  • 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...
  • 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 ...
  • 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...
  • 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...
  • 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” ...
  • 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...
  • 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...
  • [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 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...
  • [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à...
  • 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...
  • 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...
  • 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...
  • 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...
  • 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 ...
  • Austerity e la patrimoniale sui bytes

    In periodo di austerity mi chiedo solo perchè nessuno si preoccupi mai di “tagliare” i bytes in eccesso sui propri database… :-) Non potremmo mettere tutta la nostra attenzione anche nella costruzione dei nostri database e risparmiare ciò che è inutile...
  • 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...