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 possa far arrivare meglio il concetto e le motivazioni…

0

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 @x3 smallint = 125; DECLARE @y3 smallint = 115; DECLARE @x4 smallint = 100; DECLARE…

1

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, superfluo e alla lunga dannoso? Vi siete mai chiesti se avete bytes in eccesso?…

0

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 indice cluster, che uno o più indici noncluster: in che ordine eseguo le…

2

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(4000). Perchè? Perchè così sono sicuro di poter memorizzare al suo interno sempre tutto ciò che mi…

1

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 (magari perchè dinamicamente si vanno a generare, sulla base di parametri e/o dati, set differenti)….

0

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) tutti le misure sono definite INT o DECIMAL Qualcosa come: Adesso prendete la necessità di voler modificare tutte…

0

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) ad un problema di running total : La domanda, a questo punto, potrebbe nascere spontanea: perchè, a distanza…

2

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 vista, tre sono le informazioni in grado di farci analizzare i tempi necessari a generare un report: TimeDataRetrieval: millisecondi utilizzati per recuperare…

0