<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Script on UGISS</title>
    <link>https://1ab09184.ugiss-website.pages.dev/tags/script/</link>
    <description>Recent content in Script on UGISS</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Sat, 12 Apr 2025 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://1ab09184.ugiss-website.pages.dev/tags/script/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Unicità condizionata, NULL e ANSI_NULLS: Soluzioni T-SQL senza trigger</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2025/04/12/unicita-condizionata-null-e-ansi_nulls-soluzioni-t-sql-senza-trigger/</link>
      <pubDate>Sat, 12 Apr 2025 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2025/04/12/unicita-condizionata-null-e-ansi_nulls-soluzioni-t-sql-senza-trigger/</guid>
      <description>&lt;p&gt;Recentemente mi sono trovato ad affrontare un caso interessante relativo alla gestione di un vincolo UNIQUE con alcune particolarità su una tabella di un database SQL Server. La richiesta è stata quella controllare che i valori inseriti o modificati in una colonna siano unici, permettendo però NULL multipli.&lt;/p&gt;&#xA;&lt;p&gt;Consideriamo, a titolo di esempio semplificato, lo schema della tabella dbo.EmailTable. La tabella memorizza alcuni attributi di una anagrafica contatti tra cui il Nome, il Cognome e l&amp;rsquo;Email. L’attributo Email non è obbligatorio ma quando presente deve essere univoco. L&amp;rsquo;assenza dell&amp;rsquo;attributo viene gestita con un NULL.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimized Locking in Azure SQL Database: Concorrenza senza limiti!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2025/01/25/optimized-locking-in-azure-sql-database-concorrenza-senza-limiti/</link>
      <pubDate>Sat, 25 Jan 2025 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2025/01/25/optimized-locking-in-azure-sql-database-concorrenza-senza-limiti/</guid>
      <description>&lt;p&gt;Nel panorama delle applicazioni moderne, dove scalabilità e concorrenza sono elementi fondamentali, mantenere prestazioni elevate senza compromettere la consistenza dei dati è una sfida costante. Azure SQL Database rappresenta spesso il punto di partenza per l&amp;rsquo;introduzione di nuove funzionalità destinate ad arricchire tutte le versioni di SQL Server. Seguendo questa tendenza, Microsoft ha annunciato una funzionalità dal nome magico: &lt;strong&gt;Optimized Locking!&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rigenerare colonne IDENTITY in SQL Server e Azure SQL!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2024/08/06/rigenerare-colonne-identity-in-sql-server-e-azure-sql/</link>
      <pubDate>Tue, 06 Aug 2024 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2024/08/06/rigenerare-colonne-identity-in-sql-server-e-azure-sql/</guid>
      <description>&lt;p&gt;Recentemente mi sono imbattuto nell&amp;rsquo;errore SQL 8115:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Arithmetic overflow error converting IDENTITY to data type int.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Un errore di overflow su una colonna IDENTITY si verifica ogni volta che proviamo a inserire in una colonna un valore superiore al limite previsto per il tipo di dato. Nel caso che ho seguito si trattava di una colonna di tipo integer con proprietà IDENTITY(1, 1), valorizzata automaticamente da SQL Server ad ogni inserimento di dati. L&amp;rsquo;overflow può avvenire su colonne di tipo integer (come in questo caso) ma anche su colonne di tipo tinyint, smallint e bigint.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aggiornamento statistiche SQL per database che contengono External Table PolyBase</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2023/11/11/aggiornamento-statistiche-sql-per-database-che-contengono-external-table-polybase/</link>
      <pubDate>Sat, 11 Nov 2023 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2023/11/11/aggiornamento-statistiche-sql-per-database-che-contengono-external-table-polybase/</guid>
      <description>&lt;p&gt;Recentemente, ho avuto l&amp;rsquo;occasione di configurare un piano di manutenzione database per un DB in cui sono state create alcune External Table PolyBase che permettono di raggiungere dati archiviati all&amp;rsquo;esterno dell&amp;rsquo;istanza SQL Server.&lt;/p&gt;&#xA;&lt;p&gt;Non si poteva testare la manutenzione database contestualmente alla configurazione del piano e così ho atteso la finestra temporale dedicata a queste attività. All&amp;rsquo;ora indicata, il piano di manutenzione (configurazione classica) non è stato eseguito correttamente, le verifiche hanno successivamente rilevato un errore nel task di aggiornamento statistiche.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Come reimpostare i valori della colonna Identity per tutte le tabelle di un database SQL Server</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2023/08/05/come-reimpostare-i-valori-della-colonna-identity-per-tutte-le-tabelle-di-un-database-sql-server/</link>
      <pubDate>Sat, 05 Aug 2023 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2023/08/05/come-reimpostare-i-valori-della-colonna-identity-per-tutte-le-tabelle-di-un-database-sql-server/</guid>
      <description>&lt;p&gt;Recentemente ho avuto la necessità di dover effettuare il reseed a 1 dei valori di tutte le colonne Identity delle tabelle vuote di un database.&lt;/p&gt;&#xA;&lt;p&gt;Scomponendo la richiesta in task più piccoli si sono individuati i seguenti due task:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Individuare le tabelle senza record nel database&lt;/li&gt;&#xA;&lt;li&gt;Effettuare il reseed dell’unica colonna &lt;a href=&#34;https://learn.microsoft.com/sql/t-sql/statements/create-table-transact-sql-identity-property?WT.mc_id=DP-MVP-4029181&#34;&gt;IDENTITY&lt;/a&gt; generando uno script con i comandi incapsulando il codice all’interno di una stored procedure&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Per individuare le tabelle prive di righe può essere utilizzata la CTE spaceused sviluppata nell&amp;rsquo;articolo:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unit testing: Come scrivere la tua prima unit test!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2020/11/29/unit-testing-come-scrivere-la-tua-prima-unit-test/</link>
      <pubDate>Sun, 29 Nov 2020 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2020/11/29/unit-testing-come-scrivere-la-tua-prima-unit-test/</guid>
      <description>&lt;p&gt;Nell&amp;rsquo;&lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/2020/11/07/unit-testing-il-framework-tsqlt-e-lesecuzione-di-un-test/&#34;&gt;articolo precedente&lt;/a&gt;, il secondo di questa serie, abbiamo descritto come installare il framework tSQLt, il tool SQL Test di Red-Gate e come avviene l&amp;rsquo;esecuzione di una unit di test. Ora è giunto il momento di scrivere il nostro primo test! Useremo gli strumenti che abbiamo descritto in precedenza!&lt;/p&gt;&#xA;&lt;h3 id=&#34;specifiche-e-requisiti&#34;&gt;Specifiche e requisiti&lt;/h3&gt;&#xA;&lt;p&gt;Scriveremo la nostra prima unit di test per verificare i requisiti di un trigger che ci è stato commissionato dall&amp;rsquo;Azienda inventata Adventure Works LTD il cui database è disponibile per il download su &lt;a href=&#34;https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks&#34;&gt;questo repository&lt;/a&gt; di GitHub. Il database AdventureWorks2017 contiene la tabella Product riferita allo schema Production. La tabella Product rappresenta l&amp;rsquo;anagrafica dei prodotti gestiti e commercializzati dall&amp;rsquo;Azienda che vi ha commissionato un trigger per impedire l&amp;rsquo;inserimento di nuovi prodotti aventi come &amp;ldquo;scorta di sicurezza&amp;rdquo; valori minori di 10. L&amp;rsquo;Azienda desidera quindi avere sempre una scorta di magazzino pari a 10 unità. La scorta di sicurezza è un dato molto importante per le procedure automatiche di riordino dei materiali, che ne tengono conto per l&amp;rsquo;emissione degli ordini a fornitore o degli ordini di produzione. Per semplificare l&amp;rsquo;esempio, il trigger risponderà soltanto all&amp;rsquo;evento OnInsert, per i comandi INSERT.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Barcode check digit calculator for SQL Server and Azure SQL DB</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2020/10/09/barcode-check-digit-calculator-for-sql-server-and-azure-sql-db/</link>
      <pubDate>Fri, 09 Oct 2020 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2020/10/09/barcode-check-digit-calculator-for-sql-server-and-azure-sql-db/</guid>
      <description>&lt;p&gt;Chi ha avuto l&amp;rsquo;opportunità di sviluppare applicazioni per trasportare i prodotti da un luogo ad un altro, ha appreso che per gestire in modo efficiente la movimentazione delle merci all&amp;rsquo;interno di un magazzino è necessario adottare un sistema di movimentazione basato su codici a barre.&lt;/p&gt;&#xA;&lt;p&gt;Il codice a barre è la rappresentazione grafica di una sequenza di numeri e altri simboli. La rappresentazione consiste di linee (barre) e spazi. Un codice a barre è tipicamente composto da cinque parti, una di queste è la cifra di controllo, nota anche come check digit. L&amp;rsquo;algoritmo di calcolo della cifra di controllo è descritto in &lt;a href=&#34;https://www.gs1.org/services/how-calculate-check-digit-manually&#34;&gt;questa pagina&lt;/a&gt; del sito di GS1, l&amp;rsquo;associazione internazionale che si occupa di diffondere gli standard progettati per migliorare l&amp;rsquo;efficienza della filiera domanda-offerta, tra questi c’è anche lo standard relativo ai codici a barre. In &lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/2012/11/25/calcolo-della-cifra-di-controllo-di-un-codice-eanucc-versione-2-0/&#34;&gt;questo articolo&lt;/a&gt; abbiamo descritto una possibile implementazione dell&amp;rsquo;algoritmo di calcolo della cifra di controllo in TSQL, in quell&amp;rsquo;occasione abbiamo trattato il calcolo del check digit per un barcode EAN13. Recentemente, ho avuto l&amp;rsquo;occasione di migliorare la soluzione implementando le funzioni mancanti che permettono di calcolare il check digit per i seguenti tipi di barcode:&lt;/p&gt;</description>
    </item>
    <item>
      <title>sp_alter_column - La stored procedure per modificare una colonna!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2019/07/21/sp_alter_column-la-stored-procedure-per-modificare-una-colonna/</link>
      <pubDate>Sun, 21 Jul 2019 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2019/07/21/sp_alter_column-la-stored-procedure-per-modificare-una-colonna/</guid>
      <description>&lt;h4 id=&#34;introduzione&#34;&gt;Introduzione&lt;/h4&gt;&#xA;&lt;p&gt;Sarà successo anche a voi di dover modificare il tipo di dato di una colonna presente da tempo in una tabella di un database SQL Server e probabilmente vi sarete scontrati con l&amp;rsquo;errore 5074 che segnala l&amp;rsquo;impossibilità di modificare la colonna a causa della presenza di oggetti collegati come Primary Key, Foreign Key, Indici, Vincoli (di univocità e non), Statistiche, ecc..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Statistiche di utilizzo e performance delle viste in un database SQL Server</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2018/05/05/statistiche-di-utilizzo-e-performance-delle-viste-in-un-database-sql-server/</link>
      <pubDate>Sat, 05 May 2018 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2018/05/05/statistiche-di-utilizzo-e-performance-delle-viste-in-un-database-sql-server/</guid>
      <description>&lt;p&gt;Le performance di una soluzione database sono spesso oggetto di diatriba tra chi fornisce la soluzione e chi la personalizza. Scrivere codice T-SQL ottimizzato, in grado di scalare all&amp;rsquo;aumentare dei dati e degli utenti, non è affatto semplice e quando la complessità aumenta, le attività di manutenzione del codice diventano difficili da attuare anche per l&amp;rsquo;autore stesso.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Esempi di SQL Graph Database su GitHub</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2018/02/10/esempi-di-sql-graph-database-su-github/</link>
      <pubDate>Sat, 10 Feb 2018 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2018/02/10/esempi-di-sql-graph-database-su-github/</guid>
      <description>&lt;p&gt;SQL Server offre da sempre gli strumenti per gestire i dati gerarchici e le relazioni tra le entità. A volte, però, le relazioni tra le entità possono diventare complesse. Pensiamo ad una relazione molti-a-molti, i database relazionali non dispongono di soluzioni native per questo tipo di legame, che viene comunemente implementato con una tabella di associazione.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conversioni implicite: La plan cache ci svela quante sono e dove avvengono!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2017/11/30/conversioni-implicite-la-plan-cache-ci-svela-quante-sono-e-dove-avvengono/</link>
      <pubDate>Thu, 30 Nov 2017 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2017/11/30/conversioni-implicite-la-plan-cache-ci-svela-quante-sono-e-dove-avvengono/</guid>
      <description>&lt;p&gt;Nell&amp;rsquo;articolo &lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/2017/09/28/conversioni-implicite-cosa-sono-e-che-impatto-hanno-sulle-nostre-query/&#34;&gt;Conversioni implicite: cosa sono e che impatto hanno sulle nostre query&lt;/a&gt;, Luca Bruni (&lt;a href=&#34;https://x.com/mrg3d&#34;&gt;@mrg3d&lt;/a&gt;) ci ha parlato delle conversioni implicite che avvengono, a nostra insaputa, all&amp;rsquo;interno dell&amp;rsquo;Engine di SQL Server. Tali conversioni, possono costringere il Query Optimizer ad accedere alle tabelle con operazioni di scansione (Table Scan, Index Scan) in alternativa alle più efficienti operazioni di Seek (Index Seek), e quando una parte significativa del carico di lavoro è interessata da conversioni implicite, le performance degradano visibilmente!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Manutenzione indici colonnari: una ricostruzione accorta</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2017/09/26/manutenzione-indici-colonnari/</link>
      <pubDate>Tue, 26 Sep 2017 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2017/09/26/manutenzione-indici-colonnari/</guid>
      <description>&lt;p&gt;Avete presente le procedure di manutenzione degli indici di Hola Hallengren?&lt;/p&gt;&#xA;&lt;p&gt;Se no, vi consiglio di guardarle perché sono molto utili. Ecco il link: &lt;a href=&#34;https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html&#34;&gt;https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Se le conoscete, magari vi è capitato di notare che, nelle versioni più recenti di SQL Server, la manutenzione degli indici colonnari richiede uno sforzo ulteriore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#34;SQL Server Management Studio ha smesso di funzionare&#34;, ho perso lo script che stavo scrivendo?</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/</link>
      <pubDate>Tue, 15 Nov 2016 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/</guid>
      <description>&lt;p&gt;&amp;ldquo;SQL Server Management Studio ha smesso di funzionare&amp;rdquo;, &lt;strong&gt;a volte succede&lt;/strong&gt; di ottenere a video questo messaggio &lt;strong&gt;poco simpatico&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/images/Management-Studio-crashed-1.jpg&#34;&gt;&lt;img src=&#34;https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/images/Management-Studio-crashed-1.jpg&#34; alt=&#34;Management Studio crashed 1&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nulla di grave, &amp;ldquo;&lt;em&gt;&lt;strong&gt;basta solo&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; riavviare il programma.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/images/Management-Studio-crashed-2.jpg&#34;&gt;&lt;img src=&#34;https://1ab09184.ugiss-website.pages.dev/2016/11/15/sqlserver-management-studio-ha-smesso-di-funzionare-ho-perso-lo-script-che-stavo-scrivendo/images/Management-Studio-crashed-2.jpg&#34; alt=&#34;Management Studio crashed 2&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ed ecco che una volta riavviato SSMS &lt;strong&gt;alcun file è stato recuperato&lt;/strong&gt; &amp;hellip; GRRRRRR!!!!&lt;/p&gt;&#xA;&lt;p&gt;La cosa meno divertente, quindi, è scoprire che &lt;strong&gt;la query/procedura&lt;/strong&gt; che si stava scrivendo e provando, magari da qualche ora, &lt;strong&gt;è andata persa&lt;/strong&gt;. Ovvero perse le ultime modifiche non salvate .. &lt;em&gt;come dici!? non hai salvato lo script SQL prima di eseguirlo!? Ahhh, non hai proprio salvato nemmeno una volta!?&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Azure DTU Calculator</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2016/09/12/sql-azure-dtu-calculator/</link>
      <pubDate>Mon, 12 Sep 2016 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2016/09/12/sql-azure-dtu-calculator/</guid>
      <description>&lt;p&gt;Una delle domande più comuni quando si inizia ad utilizzare SQL Azure è legata alla scelta del livello di servizio necessario per la proprie necessità. Dato che sul Cloud, ogni risorsa sprecata è un tangibile costo aggiuntivo, è bene scelgliere il livello di servizio migliore. Il &amp;ldquo;problema&amp;rdquo; è che il livello è misurato in DTU - Database Transaction Units - ossia un valore che rappresenta un mix di CPU, Memoria ed I/O. Il problema è che è molto difficile, se non impossibile, calcolare questo valore per un server on-premises già esistente, in modo da poter aver un paragone con dei dati conosciuti.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Slide e demo della sessione &#34;SQL Server 2016 What&#39;s new for Developers&#34;</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2016/07/21/slide-e-demo-della-sessione-sql-server-2016-whats-new-for-developers/</link>
      <pubDate>Thu, 21 Jul 2016 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2016/07/21/slide-e-demo-della-sessione-sql-server-2016-whats-new-for-developers/</guid>
      <description>&lt;p&gt;Sono online le slide e le demo della sessione fatta all&amp;rsquo;evento &amp;ldquo;&lt;a href=&#34;http://www.ugidotnet.org/eventi/45/Buon-compleanno-UGIdotNET!&#34;&gt;Buon Compleanno UgiDotNet&lt;/a&gt;&amp;rdquo; tenutosi qualche giorno fa presso la sede di Microsoft Italia.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;SQL Server 2016: novità per gli sviluppatori (Davide Mauri - MVP)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Supporto Nativo a JSON, Tabelle temporali, Live Query Statistics, Stretch Database e Polybase sono feature che senza dubbio sono di sicuro interesse per chi sviluppa app, di qualsiasi genere. In questa sessione vedremo le prime tre feature con un certo dettaglio ed introdurremo le potenzialità delle ultime citate per poter dare un quadro completo di SQL Server 2016 che è una della release più ricche ed importanti, per quanto riguarda lo sviluppo, da SQL Server 2005 in avanti. Non mancherà, ovviamente, una &amp;ldquo;piccola&amp;rdquo; citazione a SQL Server per Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Qual è la tabella più grande nel DB corrente?</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2016/01/30/qual-e-la-tabella-piu-grande-nel-db-corrente/</link>
      <pubDate>Sat, 30 Jan 2016 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2016/01/30/qual-e-la-tabella-piu-grande-nel-db-corrente/</guid>
      <description>&lt;p&gt;Può succedere di avere la necessità di sapere quale sia la tabella più grande (in termini di spazio occupato), nel database su cui si sta lavorando.&lt;/p&gt;&#xA;&lt;p&gt;Ci sono diversi modi per rispondere a questa domanda, si potrebbe utilizzare il report standard &lt;a href=&#34;http://blogs.msdn.com/b/buckwoody/archive/2007/12/14/sql-server-management-studio-standard-reports-disk-usage-by-table-top-tables.aspx&#34;&gt;Disk Usage by Top Table&lt;/a&gt; fornito da SQL Server Management Studio (SSMS) oppure, se si volesse effettuare l&amp;rsquo;operazione attraverso T-SQL, si potrebbe eseguire la stored procedure di sistema &lt;a href=&#34;https://msdn.microsoft.com/it-it/library/ms188776%5C%28v=sql.130%5C%29.aspx&#34;&gt;sp_spaceused&lt;/a&gt; per ogni tabella del DB, salvando tutti i risultati parziali in una tabella temporanea per poi ordinarli in funzione della colonna &amp;ldquo;reserved&amp;rdquo; o &amp;ldquo;data&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Real Time Power BI</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2016/01/05/real-time-power-bi/</link>
      <pubDate>Tue, 05 Jan 2016 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2016/01/05/real-time-power-bi/</guid>
      <description>&lt;p&gt;Una delle feature più interessanti di PowerBI è che, come al solito, non è &amp;ldquo;solamente&amp;rdquo; un prodotto, ma è di fatto una piattaforma utilizzabile liberamente ed integrabile con applicazioni custom. A questo proposito ho fatto una sessione dedicata a questo tema al SQL Saturday d Ljubjlana.&lt;/p&gt;&#xA;&lt;p&gt;[slideshare id=56076686&amp;amp;doc=real-timepowebi-151212092739]&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;Se siete interessati a capire come funzionano le API di PowerBI, come potete creare Dashboard in tempo reale e come potete fare il tutto direttamente dalle vostre applicazioni, qui trovate &lt;strong&gt;slide e demo&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Server &amp; R: Data Science End-to-End Walkthrough</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2015/12/30/sql-server-r-data-science-end-to-end-walkthrough/</link>
      <pubDate>Wed, 30 Dec 2015 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2015/12/30/sql-server-r-data-science-end-to-end-walkthrough/</guid>
      <description>&lt;p&gt;Con l&amp;rsquo;integrazione di &lt;a href=&#34;https://msdn.microsoft.com/en-us/library/mt591996.aspx&#34;&gt;R in SQL Server&lt;/a&gt;, si apre un mondo di possibilità per tutti coloro che vogliono/devono analizzare i dati per capire come poterli usare al meglio. Microsoft, per aiutare a capire come sfruttare questo enorme potenziali, ha creato un tutorial dedicato:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://msdn.microsoft.com/en-US/library/mt612857.aspx&#34;&gt;Data Science End-to-End Walkthrough&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Questi i singoli step:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSIS Dashboard: Community Project!</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2015/09/24/ssis-dashboard-community-project/</link>
      <pubDate>Thu, 24 Sep 2015 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2015/09/24/ssis-dashboard-community-project/</guid>
      <description>&lt;p&gt;L&amp;rsquo;anno scorso ho pubblicato su GitHub un progetto dedicato alla creazione di una Dashboard per SQL Server Integration Services (dalla versione 2012 in avanti). L&amp;rsquo;idea è quella di utilizzare tutti i dati che sono disponibili nel database &lt;a href=&#34;https://msdn.microsoft.com/en-GB/library/hh479588.aspx&#34;&gt;SSISDB&lt;/a&gt; e renderli fruibili in modo più&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;bello&lt;/li&gt;&#xA;&lt;li&gt;user friendly&lt;/li&gt;&#xA;&lt;li&gt;utile&lt;/li&gt;&#xA;&lt;li&gt;web&lt;/li&gt;&#xA;&lt;li&gt;mobile&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;La dashboard permette di vedere lo stato di esecuzione dei Package SSIS, monitorare alcuni indicatori fondamentali (ad esempio se i package stanno avendo problemi di memoria oppure i lookup hanno trovato dei dati duplicati nei propri dataset), oltre che di vedere l&amp;rsquo;andamento delle performance nel tempo (e di fare una semplicissima previsione sul futuro, per ora calcolata tramite una banale media mobile). E&amp;rsquo; inoltre possibile vedere il dettaglio di esecuzione del package e di ogni suo task, e, chiaramente, verificare se ci sono stati errori o warning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Server Maintenance Solution</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2014/04/09/sql-server-maintenance-solution/</link>
      <pubDate>Wed, 09 Apr 2014 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2014/04/09/sql-server-maintenance-solution/</guid>
      <description>&lt;p&gt;La diffusissima soluzione di Ola Hallengren per la manutenzione completa di SQL Server è stata aggiornata e testata per SQL Server 2014 con l&amp;rsquo;aggiunta di opzioni per le nuove funzionalità:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Backup Encryption&lt;/li&gt;&#xA;&lt;li&gt;lock priorities per la ricostruzione online degli indici&lt;/li&gt;&#xA;&lt;li&gt;ricostruzione online di singole partizioni di indici&lt;/li&gt;&#xA;&lt;li&gt;aggiornamento delle statistiche per le tabelle memory-optimized&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Script e documentazione sono disponibili al seguente link: &lt;a href=&#34;http://ola.hallengren.com&#34; title=&#34;SQL Server Maintenance Solution (Ola Hallengren)&#34;&gt;http://ola.hallengren.com&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calcolo della cifra di controllo di un codice EAN/UCC (versione 2.0)</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2012/11/25/calcolo-della-cifra-di-controllo-di-un-codice-eanucc-versione-2-0/</link>
      <pubDate>Sun, 25 Nov 2012 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2012/11/25/calcolo-della-cifra-di-controllo-di-un-codice-eanucc-versione-2-0/</guid>
      <description>&lt;p&gt;Qualche tempo fa, in &lt;a href=&#34;https://1ab09184.ugiss-website.pages.dev/sgovoni/2008/05/05/algoritmo-per-il-calcolo-della-cifra-di-controllo-di-un-codice-ean-ucc/&#34;&gt;questo articolo&lt;/a&gt;, abbiamo analizzato l&amp;rsquo;algoritmo di calcolo della cifra di controllo di un codice UCC/EAN, chi si occupa di logistica conoscerà bene l&amp;rsquo;argomento.&lt;/p&gt;&#xA;&lt;p&gt;Lo standard di codifica UCC/EAN richiede che ogni codice generato termini con una cifra compresa tra zero (0) e nove (9), chiamata &lt;strong&gt;cifra di controllo&lt;/strong&gt; (dall&amp;rsquo;inglese check digit). Questa cifra è calcolata in funzione delle altre cifre che compongono il codice e ha lo scopo di garantire che il codice, stampato in formato barcode, sia interpretato correttamente dal lettore ottico.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Insert Or update (aka Replace or Upsert)</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2012/10/29/insert-or-update-aka-replace-or-upsert/</link>
      <pubDate>Mon, 29 Oct 2012 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2012/10/29/insert-or-update-aka-replace-or-upsert/</guid>
      <description>&lt;p&gt;Una delle necessità tipica degli sviluppatori è quella di inserire una riga oppure aggiornarne i valori se la riga è già presente. MySQL supporta il comando REPLACE:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://dev.mysql.com/doc/refman/5.0/en/replace.html&#34;&gt;http://dev.mysql.com/doc/refman/5.0/en/replace.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;oppure l&amp;rsquo;opzione INSERT . ON DUPLICATE KEY UPDATE:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html&#34;&gt;http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Con SQL Server si può ottenre lo stesso funzionamento, in modo più standard, usando il comando &lt;a href=&#34;http://technet.microsoft.com/en-us/library/bb510625.aspx&#34;&gt;MERGE&lt;/a&gt; ed i &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/dd776382.aspx&#34;&gt;Row Constructors&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Server Listening Port</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2012/10/06/sql-server-listening-port/</link>
      <pubDate>Sat, 06 Oct 2012 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2012/10/06/sql-server-listening-port/</guid>
      <description>&lt;p&gt;Script per identificare le porte TCP sulla quale è in ascolto SQL Server&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;------------------------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Version: 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Release Date: 2012-08-01&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Author: Davide Mauri (SolidQ)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Italy License.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;------------------------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;use tempdb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;go&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;declare&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;is_named_instance bit;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;declare&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; nvarchar(&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;declare&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_port nvarchar(&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;declare&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_enabled bit;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;declare&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;Protocols &lt;span style=&#34;color:#66d9ef&#34;&gt;table&lt;/span&gt; (Value1 nvarchar(&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;, Value2 nvarchar(&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;Data&lt;/span&gt; nvarchar(&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;is_named_instance &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;servicename &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MSSQLSERVER&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;is_named_instance &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;begin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SOFTWARE\MICROSOFT\Microsoft SQL Server\&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+@@&lt;/span&gt;servicename&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\MSSQLServer\Supersocketnetlib&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;begin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SOFTWARE\MICROSOFT\MSSQLServer\MSSQLServer\Supersocketnetlib&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;insert&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;into&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;Protocols &lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt; master..xp_regread &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;rootkey&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;HKEY_LOCAL_MACHINE&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;value_name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ProtocolList&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;exists&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;Protocols &lt;span style=&#34;color:#66d9ef&#34;&gt;where&lt;/span&gt; Value2 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tcp&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_enabled &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_enabled &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\TCP&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;exec&lt;/span&gt; master..xp_regread &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;rootkey&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;HKEY_LOCAL_MACHINE&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;key&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;value_name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;TcpPort&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;value&lt;span style=&#34;color:#f92672&#34;&gt;=@&lt;/span&gt;tcp_port &lt;span style=&#34;color:#66d9ef&#34;&gt;OUTPUT&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;SERVERNAME,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    instance_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;SERVICENAME,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tcp_enabled &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_enabled,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tcp_port &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;tcp_port&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Attenzione, lo script suddetto fa uso della stored procedure non documentata xp_regread! Con SQL Server 2012, invece, è sufficiente usare la DMV&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maintenance solution by Ola Hallengren: New version released</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2011/06/09/maintenance-solution-by-ola-hallengren-new-version-released/</link>
      <pubDate>Thu, 09 Jun 2011 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2011/06/09/maintenance-solution-by-ola-hallengren-new-version-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://ola.hallengren.com&#34;&gt;Ola Hallengren&lt;/a&gt; ha rilasciato un aggiornamento degli script T-SQL che ha implementato per eseguire le più frequenti attività di manutenzione database; quelle attività che ogni DBA è chiamato ad eseguire e monitorare.&lt;/p&gt;&#xA;&lt;p&gt;Si tratta di una soluzione basata su stored procedure, user-defined function, sqlcmd e job di SQL Server Agent che permette di eseguire Backups, Database Integrity Check, Index Optimization con Reorganize o Rebuild in funzione della configurazione specificata.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Script che restituisce la cronologia delle modifiche agli oggetti di un database</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2011/03/22/script-che-restituisce-la-cronologia-delle-modifiche-agli-oggetti-di-un-database/</link>
      <pubDate>Tue, 22 Mar 2011 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2011/03/22/script-che-restituisce-la-cronologia-delle-modifiche-agli-oggetti-di-un-database/</guid>
      <description>&lt;p&gt;Capita, di frequente, di avere la necessità di stabilire quale sia stata la cronologia delle modifiche effettuate agli oggetti di un database, ad esempio alle Stored Procedure.&lt;br&gt;&#xA;Lo script restituisce la cronologia di modifica a tutti gli oggetti o, a particolari tipologie di oggetti. Se si vuole ottenere la cronologia di modifica delle SP basta inserire nella sezione di assegnazione delle variabili l&amp;rsquo;istruzione SET @obj_type=&amp;lsquo;P&amp;rsquo;.&lt;br&gt;&#xA;Se il database in esame prevede l&amp;rsquo;uso degli oggetti di supporto per il diagramming l&amp;rsquo;elenco delle SP include anche SP come sp_creatediagram etc., che appartengono, di default, allo schema dbo.&lt;br&gt;&#xA;Viene adottato un criterio di ordinamento per data modifica e tipo oggetto, ma il criterio è personalizzabile cambiando il valore di @sqlord.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oggetti che dipendono da una tabella: DROP e ADD FOREIGN KEY CONSTRAINT</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2010/10/14/oggetti-che-dipendono-da-una-tabella-drop-e-add-foreign-key-constraint/</link>
      <pubDate>Thu, 14 Oct 2010 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2010/10/14/oggetti-che-dipendono-da-una-tabella-drop-e-add-foreign-key-constraint/</guid>
      <description>&lt;p&gt;Ci si può trovare nella situazione di dover eliminare e ricreare (successivamente) le dipendenze (FOREIGN KEY) da una tabella alterando gli oggetti che dipendono da essa.&lt;/p&gt;&#xA;&lt;p&gt;Pensiamo, ad esempio, alla necessità di eliminare e ricreare una tabella che ha integrità referenziale con altre, uno degli step necessari è appunto l’eliminazione delle dipendenze (FOREIGN KEY) sugli oggetti che dipendono dalla tabella da ricreare.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verificare la presenza di indici identici / duplicati</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2009/05/27/verificare-la-presenza-di-indici-identici-duplicati/</link>
      <pubDate>Wed, 27 May 2009 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2009/05/27/verificare-la-presenza-di-indici-identici-duplicati/</guid>
      <description>&lt;p&gt;Qual è il rischio in cui si può incorrere quando un progetto viene sviluppato da più persone, ovvero quando un database viene modellato da più mani?&lt;/p&gt;&#xA;&lt;p&gt;Creare un indice che esiste già! :-(&lt;/p&gt;&#xA;&lt;p&gt;SQL Server non fa nulla per venirci in aiuto o, almeno, non fa nulla in automatico.&lt;br&gt;&#xA;Con questo script è possibile ottenere una lista degli indici identici / duplicati.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Indici doppi: un sovraccarico inutile</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2009/01/24/indici-doppi-un-sovraccarico-inutile/</link>
      <pubDate>Sat, 24 Jan 2009 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2009/01/24/indici-doppi-un-sovraccarico-inutile/</guid>
      <description>&lt;p&gt;Possiamo facilmente immaginare l&amp;rsquo;inefficienza introdotta dalla doppia indicizzazione (ugualmente ordinata) di un attributo: SQL Server dovrà mantenere aggiornati due indici, organizzati in strutture B-Tree letteralmente identiche, senza trarre alcun beneficio da una delle due.&lt;/p&gt;&#xA;&lt;p&gt;La stored procedure &lt;strong&gt;dbo.usp_drop_double_more_index&lt;/strong&gt;, definita di seguito, permette di individuare ed eliminare i casi di doppia (tripla, ecc&amp;hellip;) indicizzazione dei medesimi attributi.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aggiornare una tabella pivot di Microsoft Excel</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2009/01/07/aggiornare-una-tabella-pivot-di-microsoft-excel/</link>
      <pubDate>Wed, 07 Jan 2009 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2009/01/07/aggiornare-una-tabella-pivot-di-microsoft-excel/</guid>
      <description>&lt;p&gt;L’aggiornamento dei dati di una tabella pivot in Microsoft Excel, viene tipicamente configurato per essere eseguito in modo automatico all’apertura del documento stesso. In alcune situazioni, però, potrebbe essere richiesto un aggiornamento automatico ogni X minuti oppure al verificarsi di un determinato evento senza dover necessariamente aprire il file Excel che contiene la tabella pivot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conoscere la data/ora dell&#39;ultimo user UPDATE su una tabella</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/12/20/conoscere-la-data-ora-dell-ultimo-user-update-su-una-tabella/</link>
      <pubDate>Sat, 20 Dec 2008 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/12/20/conoscere-la-data-ora-dell-ultimo-user-update-su-una-tabella/</guid>
      <description>&lt;p&gt;Come posso conoscere la data e l’ora dell’ultimo UPDATE eseguito su una tabella da parte di un utente ?&lt;/p&gt;&#xA;&lt;p&gt;Una delle DMVs (&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms187974.aspx&#34;&gt;Index Related Dynamic Management Views and Functions&lt;/a&gt;), disponibili dalla versione 2005 di SQL Server, ci permette di rispondere a questa domanda.&lt;/p&gt;&#xA;&lt;p&gt;Possiamo infatti utilizzare la DMV &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms188755.aspx&#34;&gt;sys.dm_db_index_usage_stats&lt;/a&gt; che con i sui differenti contatori, basati sulle operazioni eseguite sugli indici, ci permette di conoscere, ad esempio, la data e l’ora dell’ultimo comando UPDATE eseguito su una determinata tabella.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Indicizzazione dei vincoli FOREIGN KEY</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/11/24/indicizzazione-dei-vincoli-foreign-key/</link>
      <pubDate>Mon, 24 Nov 2008 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/11/24/indicizzazione-dei-vincoli-foreign-key/</guid>
      <description>&lt;p&gt;Una relazione tra le tabelle di un database è espressa nei valori dei dati attraverso una chiave primaria (Primary Key) ed una chiave esterna (Foreign Key).&lt;/p&gt;&#xA;&lt;p&gt;La chiave primaria è rappresenta da una o più colonne di una tabella i cui valori identificano in modo univoco ogni riga della tabella stessa. La chiave esterna è rappresenta da una o più colonne i cui valori sono gli stessi della chiave primaria.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Split ordinato di una colonna di tipo VarChar</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/09/17/split-ordinato-di-una-colonna-di-tipo-varchar/</link>
      <pubDate>Wed, 17 Sep 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/09/17/split-ordinato-di-una-colonna-di-tipo-varchar/</guid>
      <description>&lt;p&gt;Recentemente, ho avuto l’occasione di realizzare un’estrazione dati in cui era richiesto di dividere le righe di una colonna di tipo VARCHAR per ottenere due colonne ordinate tra loro, una specie di &lt;em&gt;partizione&lt;/em&gt; dinamica ordinata.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Disponiamo di un database SQL Server in cui sono presenti le tabelle anagrafiche dbo.Magazzini e dbo.Vani utilizzate rispettivamente per memorizzare l’anagrafica dei magazzini aziendali ed la relativa suddivisione in vani.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Svuotare un database: un meccanismo automatico</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/09/02/svuotare-un-database-un-meccanismo-automatico/</link>
      <pubDate>Tue, 02 Sep 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/09/02/svuotare-un-database-un-meccanismo-automatico/</guid>
      <description>&lt;p&gt;Può capitare, per diversi motivi, di avere la necessità di svuotare un database per riportarlo allo stato &amp;ldquo;iniziale&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Per stato &amp;ldquo;iniziale&amp;rdquo; intendo il momento dell&amp;rsquo;installazione: nessuna riga (se non in eventuali tabelle che devono essere già popolate) e con i contatori delle colonne autoincrementanti a zero.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;/*&lt;br&gt;&#xA;Meccanismo di delete automatico&lt;br&gt;&#xA;*/&lt;br&gt;&#xA;set nocount on&lt;br&gt;&#xA;print &amp;lsquo;*** delete&amp;rsquo;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deframmentazione indici</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/07/17/deframmentazione-indici/</link>
      <pubDate>Thu, 17 Jul 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/07/17/deframmentazione-indici/</guid>
      <description>&lt;p&gt;Abbiamo trattato il problema della frammentazione degli indici nei post &lt;a href=&#34;http://community.ugiss.org/blogs/sgovoni/archive/2008/03/03/index-fragmentation.aspx&#34;&gt;Index Fragmentation&lt;/a&gt; e &lt;a href=&#34;http://community.ugiss.org/blogs/sgovoni/archive/2008/03/30/index-fragmentation-parte-2.aspx&#34;&gt;Index Fragmentation (Parte 2)&lt;/a&gt; definendo la stored procedure USP_ExecReorgRebuildIndex() in grado di eseguire la deframmentazione degli indici con &lt;em&gt;avg_fragmentation_in_percent&lt;/em&gt; maggiore del 10% in un database SQL Server 2005.&lt;/p&gt;&#xA;&lt;p&gt;La DMV sys.dm_db_index_physical_stats non è presente nella versione 2000 di SQL Server (di cui esistono numerose installazioni attive in produzione) da qui la non compatibilità della stored procedure USP_ExecReorgRebuildIndex() su SQL Server 2000.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PIVOT dinamico in SQL Server 2005</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/06/19/pivot-dinamico-in-sql-server-2005/</link>
      <pubDate>Thu, 19 Jun 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/06/19/pivot-dinamico-in-sql-server-2005/</guid>
      <description>&lt;p&gt;La funzione PIVOT di SQL Server 2005 non permette di utilizzare una variabile per la definizione delle colonne da creare come risultato dell&amp;rsquo;operazione di pivoting.&lt;/p&gt;&#xA;&lt;p&gt;E&amp;rsquo; possibile superare questo limite utilizzando del codice SQL dinamico, creando al volo la query da eseguire ed mandandola in esecuzione con il comando &lt;em&gt;sp_executesql&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Importazione dati da file XML a tabella SQL Server</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/06/15/importazione-dati-da-file-xml-a-tabella-sql-server/</link>
      <pubDate>Sun, 15 Jun 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/06/15/importazione-dati-da-file-xml-a-tabella-sql-server/</guid>
      <description>&lt;p&gt;La stored procedure USP_IMPORT_XML_INTO_SQL() definita di seguito permette l’importazione di dati da file XML a tabella SQL Server.&lt;/p&gt;&#xA;&lt;p&gt;La &lt;strong&gt;sorgente&lt;/strong&gt; dati è rappresentata da un file &lt;strong&gt;XML&lt;/strong&gt; strutturato come il file di esempio TestTab.xml illustrato in figura 1.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/Esempio_File_XML.bmp&#34; alt=&#34;TestTab.xml&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Figura 1&lt;/p&gt;&#xA;&lt;p&gt;La &lt;strong&gt;destinazione&lt;/strong&gt; su cui importare i dati è rappresentata da una &lt;strong&gt;tabella SQL Server&lt;/strong&gt; il cui nome deve essere specificato nel file XML dal tag DATA IDENTIFIER. Nell’esempio, la tabella di destinazione è TESTTAB .&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calcolo della cifra di controllo di un codice EAN/UCC</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/05/02/calcolo-della-cifra-di-controllo-di-un-codice-ean-ucc/</link>
      <pubDate>Fri, 02 May 2008 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/05/02/calcolo-della-cifra-di-controllo-di-un-codice-ean-ucc/</guid>
      <description>&lt;p&gt;Lo standard di codifica EAN/UCC richiede che ogni codice generato termini con una cifra compresa tra zero e nove chiamata cifra di controllo (check digit).&lt;/p&gt;&#xA;&lt;p&gt;La seguente Scalar-valued Function &lt;strong&gt;UDF_GetCheckDigitUCCEAN()&lt;/strong&gt; implementa l&amp;rsquo;algoritmo di calcolo della cifra di controllo e può essere utilizzata per i seguenti tipi:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;EAN/UCC-8&lt;/li&gt;&#xA;&lt;li&gt;EAN/UCC-12&lt;/li&gt;&#xA;&lt;li&gt;EAN/UCC-13&lt;/li&gt;&#xA;&lt;li&gt;EAN/UCC-14&lt;/li&gt;&#xA;&lt;li&gt;SSCC (EAN/UCC-128) &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;-- Drop Scalar-valued Function DBO.UDF_GetCheckDigitUCCEAN&lt;br&gt;&#xA;IF OBJECT_ID(&amp;lsquo;UDF_GetCheckDigitUCCEAN&amp;rsquo;, &amp;lsquo;FN&amp;rsquo;) IS NOT NULL&lt;br&gt;&#xA;  DROP FUNCTION DBO.UDF_GetCheckDigitUCCEAN&lt;br&gt;&#xA;GO&lt;/p&gt;</description>
    </item>
    <item>
      <title>Esportazione del result-set di una query su foglio MS Excel</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2008/03/06/esportazione-del-result-set-di-una-query-su-foglio-ms-excel/</link>
      <pubDate>Thu, 06 Mar 2008 00:00:00 +0100</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2008/03/06/esportazione-del-result-set-di-una-query-su-foglio-ms-excel/</guid>
      <description>&lt;p&gt;La stored procedure &lt;em&gt;CS_SP_DMOExportToExcel&lt;/em&gt; rappresenta un esempio di utilizzo degli oggetti SQLDMO.SQLServer per esportare il risultato di una query su foglio Excel specificando il worksheet su cui trasferire i dati. Il worksheet specificato dal parametro @WorksheetIndex verrà &amp;ldquo;pulito&amp;rdquo; e ri-assegnato con i dati della query. Il file XLS esistente non verrà sovrascritto.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Che dimensioni hanno i file di log dei miei DB ?</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2007/10/13/che-dimensioni-hanno-i-file-di-log-dei-miei-db/</link>
      <pubDate>Sat, 13 Oct 2007 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2007/10/13/che-dimensioni-hanno-i-file-di-log-dei-miei-db/</guid>
      <description>&lt;p&gt;Questo  piccolo script (per Sql2005) riporta, per ciascun database, le dimensione dei dati, del file di log, la percentuale di utilizzo del log ed il modello di recovery attivo.&lt;/p&gt;&#xA;&lt;p&gt;select&lt;br&gt;&#xA;  rtrim (pc1.instance_name) as database_name,&lt;br&gt;&#xA;  pc3.cntr_value/1024.0 as database_size_mb,&lt;br&gt;&#xA;  pc1.cntr_value/1024.0 as log_size_mb,&lt;br&gt;&#xA;  cast (pc2.cntr_value*100.0/pc1.cntr_value as dec (5,2)) as log_space_used_perc,&lt;br&gt;&#xA;  db.recovery_model_desc&lt;br&gt;&#xA;from&lt;br&gt;&#xA;  sys.databases as db&lt;br&gt;&#xA;inner join&lt;br&gt;&#xA;  sys.dm_os_performance_counters as pc1 on pc1.instance_name = db.name&lt;br&gt;&#xA;inner join&lt;br&gt;&#xA;  sys.dm_os_performance_counters as pc2 on pc1.instance_name = pc2.instance_name&lt;br&gt;&#xA;inner join&lt;br&gt;&#xA;  sys.dm_os_performance_counters as pc3 on pc1.instance_name = pc3.instance_name&lt;br&gt;&#xA;where&lt;br&gt;&#xA;  pc1.counter_name = &amp;lsquo;Log file(s) Size (KB)&amp;rsquo;&lt;br&gt;&#xA;and&lt;br&gt;&#xA;  pc2.counter_name = &amp;lsquo;Log file(s) Used Size (KB)&amp;rsquo;&lt;br&gt;&#xA;and&lt;br&gt;&#xA;  pc3.counter_name = &amp;lsquo;Data File(s) Size (KB)&amp;rsquo;&lt;br&gt;&#xA;and&lt;br&gt;&#xA;  pc1.cntr_value &amp;gt; 0&lt;br&gt;&#xA;order by&lt;br&gt;&#xA;  pc1.instance_name&lt;/p&gt;</description>
    </item>
    <item>
      <title>Script per l&#39;analisi della dimensione della Buffer Cache</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2007/08/20/script-per-l-analisi-della-dimensione-della-buffer-cache/</link>
      <pubDate>Mon, 20 Aug 2007 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2007/08/20/script-per-l-analisi-della-dimensione-della-buffer-cache/</guid>
      <description>&lt;p&gt;Questo script permette di vedere quanta memoria è occupata dai vari oggetti di SQL Server:&lt;/p&gt;&#xA;&lt;p&gt;select&lt;br&gt;&#xA;    [name],&lt;br&gt;&#xA;    used_memory_mb = sum(single_pages_kb + multi_pages_kb)/1024.0&lt;br&gt;&#xA;from&lt;br&gt;&#xA;    sys.dm_os_memory_clerks&lt;br&gt;&#xA;group by&lt;br&gt;&#xA;    [name]&lt;br&gt;&#xA;order by&lt;br&gt;&#xA;    2 desc&lt;/p&gt;&#xA;&lt;p&gt;La memoria occupata dai piani di esecuzione per query ad-hoc è rappresentata dalla riga &amp;ldquo;SQL Plans&amp;rdquo;, mentre quella utilizzata per Stored Procedure e Trigger è indentificata dalla riga &amp;ldquo;Object Plans&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ricostruire la sequenza di ripristino</title>
      <link>https://1ab09184.ugiss-website.pages.dev/2007/07/24/ricostruire-la-sequenza-di-ripristino/</link>
      <pubDate>Tue, 24 Jul 2007 00:00:00 +0200</pubDate>
      <guid>https://1ab09184.ugiss-website.pages.dev/2007/07/24/ricostruire-la-sequenza-di-ripristino/</guid>
      <description>&lt;p&gt;Nella definizione di una strategia di disaster recovery uno dei principali fattori da tenere in considerazione è avere ben chiare le modalità di ripristino dei dati ed avere coscienza non solo della corretta sequenza di ripristino ma anche dei tempi attesi è un aspetto di primaria importanza. Il più delle volte si perde del tempo prezioso nel ricercare, all&amp;rsquo;interno di un device di backup, la posizione dei vari backup completi, differenziali e del t-log al fine di ricostruire la corretta sequenza di ripristino. Personalmente mi sono costruito uno script che potete trovare qui:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
