<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.ugiss.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server e dintorni</title><link>http://community.ugiss.org/blogs/lbianchi/default.aspx</link><description>Il blog di Luca Bianchi</description><dc:language>it</dc:language><generator>CommunityServer 2007 SP2 (Debug Build: 20611.960)</generator><item><title>Owner, Schema e Permessi su Aruba</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/26/owner-schema-e-permessi-su-aruba.aspx</link><pubDate>Thu, 26 Jun 2008 13:10:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4210</guid><dc:creator>lbianchi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4210</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/26/owner-schema-e-permessi-su-aruba.aspx#comments</comments><description>&lt;font face="Calibri" size="3"&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Da un paio di giorni è in corso nel newsgroup microsoft.public.it.sql una &lt;a class="" href="http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/ff4614339da31a70/23db795345ea8c29?hl=it&amp;#23;db795345ea8c29"&gt;discussione&lt;/a&gt; che ha come argomento la confusione esistente tra i concetti di owner, schema e permessi. &lt;/p&gt;
&lt;p&gt;Cercando di riassumere c&amp;#39;è un utente che ha disegnato una base dati all&amp;#39;interno della quale ci sono delle viste e stored procedure che richiamano altri oggetti referenziandoli, come da best practice, anteponendo il nome dello schema al nome dell&amp;#39;oggetto. Questo utente ha stipulato un contratto con un noto fornitore di servizi (Aruba) che ospiterà il suo database sui propri server. Prassi consolidata di questo fornitore è quella di definire un login per l&amp;#39;accesso ai dati e creare, nel database dell&amp;#39;utente, uno schema in cui vengono creati gli oggetti che compongono il database.&lt;/p&gt;
&lt;p&gt;In questo modo non solo viene limitata la possibilità di definire altri schema per meglio separare fra loro diverse tipologie di oggetti e/o per utilizzare gli stessi come securables, ma ogni oggetto che ne referenzia un altro smette di funzionare fino a che non vengono resi coerenti gli oggetti referenziati che adesso appartengono ad uno schema differente rispetto al momento della creazione.&lt;/p&gt;
&lt;p&gt;Questo utente ha deciso quindi di scrivere ad Aruba, spinto anche dalla discussione scaturita nel newsgroup, chiedendo lumi sulle ragioni di una scelta tanto singolare che non solo limita le possibilità offerte dal prodotto SQL Server (non posso suddividere i miei oggetti in contenitori logici), ma crea anche disagi ai propri clienti che, se vogliono seguire le best practice in tema di &amp;quot;two part name&amp;quot; per tutti gli oggetti di database, si vedono costretti a modificare le stored procedure, le viste, le udf e le proprie applicazioni di accesso ai dati per cambiare il nome dello schema degli oggetti.&lt;/p&gt;
&lt;p&gt;Questa è stata la risposta di Aruba:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;Gentile cliente,come specificato nel supporto tecnico per l&amp;#39;utilizzo del servizio&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;a href="http://assistenza.aruba.it/kb/idx/81/0/00002MS_Sql_Server.html"&gt;http://assistenza.aruba.it/kb/idx/81/0/00002MS_Sql_Server.html&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;il tipo di accesso come dbo non e&amp;#39; consentito agli oggetti presenti nel suo db in quanto proprietario e&amp;#39; l&amp;#39;utente che le e&amp;#39; stato assegnato.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Inoltre cambiando l&amp;#39;owner dei suoi oggetti in &amp;#39;dbo&amp;#39; di conseguenza non risulterebbero piu&amp;#39; accessibili in quanto l&amp;#39;utenza assegnata a causa di problemi di sicurezza ha specifici permessi che non sono permessi a livello di ruolo &amp;#39;owner&amp;#39; e non possono essere cambiati.&lt;/i&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sono evidenti le enormi lacune sul concetto di owner, schema e permessi che ha dimostrato l&amp;#39;autore di questa risposta e non può essere considerata una giustificazione neanche il fatto che fino a SQL Server 2000 il concetto di owner e quello di schema erano sovrapposti.&lt;/p&gt;
&lt;p&gt;E&amp;#39; infatti facilmente verificabile che a prescindere dallo schema in cui si trova un oggetto questo può essere acceduto anche se il nome dell&amp;#39;utente non coincide con il nome dello schema&lt;/p&gt;
&lt;p&gt;USE master;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE DATABASE ArubaTest;&lt;br /&gt;CREATE LOGIN Luca WITH PASSWORD = &amp;#39;qwerty12345&amp;#39;;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;USE ArubaTest;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE SCHEMA MySchema;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE USER Luca FROM LOGIN Luca;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE TABLE MySchema.T1 (ID int NOT NULL);&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;GRANT SELECT ON MySchema.T1 TO Luca;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;EXECUTE AS USER = &amp;#39;Luca&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ID FROM MySchema.T1&lt;br /&gt;REVERT&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;ALTER SCHEMA dbo TRANSFER MySchema.T1;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;GRANT SELECT ON dbo.T1 TO Luca;&lt;br /&gt;GO&lt;br /&gt;EXECUTE AS USER = &amp;#39;Luca&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ID FROM dbo.T1&lt;br /&gt;REVERT&lt;br /&gt;GO &lt;/p&gt;
&lt;p&gt;La stessa query sulla tabella T1 (adesso nello schema dbo) può essere eseguita anche se lo user in questione ha un default schema differente da dbo e non viene referenziato l&amp;#39;oggetto con il &amp;quot;two part name&amp;quot; &lt;/p&gt;
&lt;p&gt;ALTER USER Luca WITH DEFAULT_SCHEMA = MySchema;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;EXECUTE AS USER = &amp;#39;Luca&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT ID FROM T1&lt;br /&gt;REVERT &lt;br /&gt;GO&lt;/p&gt;
&lt;p&gt;Anche l&amp;#39;eventuale esigenza di creare oggetti nel database non richiede privilegi di livello dbowner. A prescindere da quale sia lo schema in cui un utente debba essere messo in grado di creare degli oggetti, l&amp;#39;esigenza può essere risolta con&lt;/p&gt;
&lt;p&gt;GRANT ALTER ON SCHEMA::dbo TO Luca;&lt;br /&gt;GRANT CREATE TABLE TO Luca;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;EXECUTE AS USER = &amp;#39;Luca&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE TABLE dbo.T2 (ID int NOT NULL)&lt;br /&gt;REVERT&lt;br /&gt;GO &lt;/p&gt;
&lt;p&gt;Mi piacerebbe che potesse intervenire qualcuno di Aruba per meglio chiarire quella che, a mio avviso, è una risposta quantomeno lacunosa...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4210" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Security/default.aspx">Security</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Community/default.aspx">Community</category></item><item><title>Transparent Data Encryption</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/25/transparent-data-encryption.aspx</link><pubDate>Wed, 25 Jun 2008 10:09:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4201</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4201</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/25/transparent-data-encryption.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span&gt;&lt;font face="Calibri" size="3"&gt;L’infrastruttura di cifratura basata su PKI è stata introdotta in SQL Server 2005 (a &lt;a class="" href="http://www.visual-basic.it/articoli/lbSQLprotection.htm"&gt;questo link&lt;/a&gt; trovate un mio articolo sull&amp;#39;argomento). L’implementazione, tuttavia, richiede che vengano modificate le applicazioni di accesso ai dati per far uso delle funzioni necessarie per cifrare e decifrare le informazioni oltre che aprire le chiavi simmetriche utilizzate per cifrare i dati sensibili. Tutto questo ha rappresentato un ostacolo all’implementazione della cifratura dei dati che il Transparent Data Encryption (TDE) in SQL Server 2008&amp;nbsp;si propone di superare. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span&gt;&lt;font face="Calibri" size="3"&gt;Con questa feature vengono cifrate le informazioni memorizzate nelle pagine dati su disco (in RAM i dati sono in chiaro) in maniera trasparente per le applicazioni di accesso ai dati. Rispetto all’infrastruttura PKI presente anche in SQL Server 2005 la TDE cifra l’intero database e non è possibile selezionare gli attributi che meritano di essere protetti rispetto a quelli meno critici.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span&gt;&lt;font face="Calibri" size="3"&gt;La TDE può essere implementata insieme alla compressione dei dati. Quando la pagina è in RAM, questa viene compressa per poi essere cifrata nel momento di essere scritta su disco; quando deve essere recuperata, la pagina viene decifrata per essere posta in RAM e da qui, eventualmente,&amp;nbsp;decompressa quando viene letta dall’applicazione client. Un database in cui sia abilitata la TDE si rivela poco comprimibile in occasione di un eventuale backup compresso mentre non viene pregiudicata la possibilità di compressione dei dati.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span&gt;&lt;font face="Calibri" size="3"&gt;Per poter cifrare un database è necessario definire la MASTER KEY nel master; con questa MK si genera e viene protetto un certificato digitale e questo certificato rappresenterà la protezione del nostro database. Affinchè sia possibile ripristinare il database su un’altra istanza occorre che sia presente il certificato che ha cifrato il database. Diversamente non sarà possibile ripristinare o eseguire l’attach del database.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:IT;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;La TDE, al pari della data compression, è utilizzabile con il database mirroring. Il traffico di mirroring non è automaticamente cifrato (la cifratura riguarda solo le pagine dati su disco). Per cifrare il traffico si utilizza la cifratura a livello di ENDPOINT.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-ansi-language:IT;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Nella &lt;a class="" href="http://community.ugiss.org/files/folders/workshop_20080514/default.aspx"&gt;pagina&lt;/a&gt; contenente il materiale del workshop UGISS tenutosi a Roma lo scorso mese di maggio trovate, nelle demo, degli esempi di utilizzo della TDE; altri esempi li potete trovare in &lt;a class="" href="http://sqlblogcasts.com/blogs/sqldbatips/archive/2008/06/24/new-in-sql-2008-transparent-data-encryption-overview.aspx"&gt;questo post&lt;/a&gt; e in &lt;a class="" href="http://sqlblogcasts.com/blogs/sqldbatips/archive/2008/06/24/new-in-sql-2008-transparent-data-encryption-part-ii.aspx"&gt;quest&amp;#39;altro&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4201" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Security/default.aspx">Security</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category></item><item><title>[SQL Server 2008 Data Compression]: Che cosa comprimere?</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/24/sql-server-2008-data-compression-che-cosa-comprimere.aspx</link><pubDate>Tue, 24 Jun 2008 17:33:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4198</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4198</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/24/sql-server-2008-data-compression-che-cosa-comprimere.aspx#comments</comments><description>&lt;p&gt;Allo scorso workshop UGISS di Roma (&lt;a class="" href="http://community.ugiss.org/files/folders/workshop_20080514/default.aspx"&gt;qui&lt;/a&gt; sono disponibili le slide e le demo) ho parlato, tra le altre cose, di compressione dei dati.&lt;/p&gt;
&lt;p&gt;La compressione dei dati, come noto,&amp;nbsp;è una funzionalità in grado di far risparmiare risorse in termini di IO e, conseguentemente, permette un utilizzo più efficiente della RAM. Tutto questo viene pagato con qualche punto percentuale di CPU soprattutto abilitando la compressione a livello di pagina. In circostanze tutt&amp;#39;altro che rare, come ho dimostrato nel workshop tenutosi a Roma,&amp;nbsp;la minor quantità di pagine a cui dover accedere contribuisce anche a ridurre l&amp;#39;utilizzo della CPU e, quindi, l&amp;#39;efficenza generale del sistema sotto tutti i punti di vista.&lt;/p&gt;
&lt;p&gt;Chi ha avuto modo di giocare con la data compression in SQL Server 2008 avrà certamente utilizzato la &lt;font size="2"&gt;&lt;a class="" href="http://technet.microsoft.com/en-us/library/cc280574(SQL.100).aspx"&gt;sp_estimate_data_compression_savings&lt;/a&gt; che permette di conoscere, per ciascuna tabella o indice,&amp;nbsp;una stima sul fattore di compressione atteso. &lt;a class="" href="http://sqlblog.com/blogs/paul_nielsen/archive/2008/03/13/whole-database-data-compression-procs.aspx"&gt;Paul Nielsen&lt;/a&gt; ha creato due stored procedure molto utili in tema di compressione. Con la prima (db_compression_estimate) vengono analizzate tutte&amp;nbsp;le tabelle e tutti gli indici di un database ed un report suggerisce&amp;nbsp;il livello di compressione migliore (row o page). Con la seconda (db_compression) vengono compresse tutte le pagine e tutti gli indici dove le stime precedenti indicano un risparmio di spazio pari o superiore ad una determinata soglia passata come argomento.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Senz&amp;#39;altro molto&amp;nbsp;utili... &lt;img src="http://community.ugiss.org/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4198" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Storage/default.aspx">Storage</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Eventi/default.aspx">Eventi</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Community/default.aspx">Community</category></item><item><title>Individuare gli indici duplicati o sovrapposti</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/20/individuare-gli-indici-duplicati-o-sovrapposti.aspx</link><pubDate>Fri, 20 Jun 2008 07:06:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4168</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4168</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/20/individuare-gli-indici-duplicati-o-sovrapposti.aspx#comments</comments><description>&lt;p&gt;Come tutti sappiamo una corretta strategia di indicizzazione è uno dei pilastri più importanti nell&amp;#39;implementazione di un database. Non dobbiamo esagerare, almeno in un database OLTP (in un datawarehouse diventa ammissibile &amp;quot;esagerare&amp;quot; un tantino), definendo troppi indici e, soprattutto, dovremmo verificare regolarmente che gli indici che abbiamo creato siano effettivamente utilizzati ed in questo ci viene in aiuto la &lt;a class="" href="http://msdn.microsoft.com/en-us/library/ms188755.aspx"&gt;sys.dm_db_index_usage_stats&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Talvolta però capita di individuare 2 indici&amp;nbsp;che si sovrappongono fra loro dove uno dei 2 rappresenta un subset dell&amp;#39;altro. Lo script riportato in &lt;a class="" href="http://blogs.msdn.com/sqlprogrammability/archive/2007/06/29/detecting-overlapping-indexes-in-sql-server-2005.aspx"&gt;questo post&lt;/a&gt; ci evidenzia tutte le coppie di indici sovrapposti fra loro all&amp;#39;interno di un database. Una volta individuate le diverse coppie, quale eliminare per ciascuna coppia... quello che ha più chiavi di indice (meno compatto quindi meno efficiente) o quello meno &amp;quot;specifico&amp;quot;? Dipende. Come noto l&amp;#39;efficienza di un indice è data in primo luogo dalla compattezza della sua chiave (oltre ovviamente alla selettività); non dobbiamo scordarci, però, che un indice con qualche attributo in più nella definizione della sua chiave può rappresentare un indice di copertura per talune query. Non esiste quindi una regola generale da seguire e la valutazione va fatta caso per caso ricordandosi che, in SQL Server 2005, esiste la clausola &lt;a class="" href="http://msdn.microsoft.com/en-us/library/ms188783.aspx"&gt;INCLUDE&lt;/a&gt; che permette di rimuovere degli attributi &amp;quot;secondari&amp;quot; di un indice (non clustered)&amp;nbsp;dalla definizione della chiave e memorizzarli solo nel livello foglia salvaguardando sia la compattezza dell&amp;#39;indice (meno livelli b-tree per andare dalla root al livello foglia) che la possibilità di utilizzare questo indice come indice di copertura per determinate query.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4168" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category></item><item><title>Cumulative update package... 8? No... 9!</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/18/cumulative-update-package-8-no-9.aspx</link><pubDate>Wed, 18 Jun 2008 19:12:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4156</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4156</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/18/cumulative-update-package-8-no-9.aspx#comments</comments><description>&lt;p&gt;Solo ieri Davide &lt;a class="" href="http://community.ugiss.org/blogs/dmauri/archive/2008/06/17/sql-server-2005-sp2-comulative-update-8.aspx"&gt;annunciava&lt;/a&gt; il rilascio del Cumulative Update Package 8 che oggi già viene &lt;a class="" href="http://support.microsoft.com/kb/953752"&gt;annunciato il 9&lt;/a&gt;... &lt;img src="http://community.ugiss.org/emoticons/emotion-7.gif" alt="Tongue Tied" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4156" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category></item><item><title>E se succedesse a voi...?</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/15/e-se-succedesse-a-voi.aspx</link><pubDate>Sun, 15 Jun 2008 17:45:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4123</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4123</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/15/e-se-succedesse-a-voi.aspx#comments</comments><description>&lt;p&gt;In questi giorni sulla rete si sta discutendo sulla chiusura improvvisa di ITHost.ch.&lt;/p&gt;
&lt;p&gt;Per chi non fosse al corrente della cosa, questa società forniva servizi di hosting/housing a molte aziende italiane. Improvvisamente, e senza il minimo preavviso, tutti i siti ospitati sui server di ITHost.ch sono divenuti irraggiungibili (tra questi il sito di Aspitalia.com)&amp;nbsp;in quanto il fornitore di connettività di ITHost ha deciso di chiudere i rubinetti per via delle numerose fatture non pagate da ITHost stessa. I bene informati hanno indagato e sembra che ITHost.ch sia stata dichiarata fallita nel corso del 2006 e ad oggi&amp;nbsp;i responsabili dell&amp;#39;azienda si sono resi irreperibili.&lt;/p&gt;
&lt;p&gt;Facile immaginare il &amp;quot;risentimento&amp;quot; di chi ha affidato il proprio dominio ad una società che poteva vantare numerose referenze, sia tecniche che commerciali,&amp;nbsp;ed oggi si trova nell&amp;#39;impossibilità, anche volendo trasferire il proprio dominio altrove,&amp;nbsp;di poter avere i propri dati; in taluni casi anche il dominio risulta essere &amp;quot;bloccato&amp;quot; da ITHost.ch. &lt;/p&gt;
&lt;p&gt;A queste persone va ovviamente tutta la mia solidarietà, ma la ragione di questo post non è per esprimere il mio appoggio (peraltro soltanto morale) a chi non può disporre dei propri dati ne tantomeno schierarmi da una parte o dall&amp;#39;altra. Vorrei però che tutti quanti leggeranno questo post si pongano il dubbio se sarebbero stati in grado, qualora l&amp;#39;episodio li avesse riguardati in prima persona, di far sopravvivere la propria azienda o il proprio sito con il minor disagio possibile.&lt;/p&gt;
&lt;p&gt;Sicuramente tutti i clienti di ITHost.ch avevano concordato con lo stesso le politiche di backup dei dati ma&amp;nbsp;evidentemente il &amp;quot;buco&amp;quot; è nella conservazione di tali backup che, se fossero stati in possesso dei legittimi proprietari, ciò avrebbe senz&amp;#39;altro mitigato i danni. Quello che è successo avrà sicuramente dei risvolti legali, ma una azienda non può sottostare ai procedimenti legali per entrare (o rientrare) in possesso dei propri dati e del proprio dominio. Effetti simili potevano essere scatenati da cause naturali tipo alluvioni o terremoti e per sopravvivere ad eventi simili, anche se siamo a centinaia o migliaia di chilometri dall&amp;#39;epicentro, è indispensabile implementare per tempo una efficace strategia di disaster recovery.&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4123" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Varie/default.aspx">Varie</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Disaster+recovery/default.aspx">Disaster recovery</category></item><item><title>Finalmente di nuovo online</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/15/finalmente-di-nuovo-online.aspx</link><pubDate>Sun, 15 Jun 2008 17:09:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4122</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4122</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/06/15/finalmente-di-nuovo-online.aspx#comments</comments><description>&lt;p&gt;Durante questo stop prolungato del sito di UGISS ci sono stati diversi eventi su cui avrei voluto bloggare.&lt;/p&gt;
&lt;p&gt;C&amp;#39;è stato il rilascio della &lt;a class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=35F53843-03F7-4ED5-8142-24A4C024CA05&amp;amp;displaylang=en"&gt;RC0 di SQL Server 2008&lt;/a&gt;, il down di un fornitore di servizi (ITHOST.ch) che ha coinvolto anche&amp;nbsp;il sito di &lt;a class="" href="http://www.aspitalia.com/"&gt;Aspitalia&lt;/a&gt;, si parla sempre di più di &amp;quot;&lt;a class="" href="http://blogs.technet.com/pgmalusardi/archive/2008/06/12/qual-il-sistema-operativo-pi-green.aspx"&gt;green computing&lt;/a&gt;&amp;quot;... argomenti, tutti, sui quali avrei postato qualcosa ma non mancherà certo occasione di recuperare nei prossimi giorni. La cosa più importante è essere tornati &amp;quot;on air&amp;quot;... &lt;img src="http://community.ugiss.org/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;Bye&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4122" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Varie/default.aspx">Varie</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Community/default.aspx">Community</category></item><item><title>L'evento di oggi</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/14/l-evento-di-oggi.aspx</link><pubDate>Wed, 14 May 2008 17:03:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4063</guid><dc:creator>lbianchi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4063</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/14/l-evento-di-oggi.aspx#comments</comments><description>&lt;p&gt;Oggi si è tenuto l&amp;#39;evento UGISS a Roma. Era il primo evento nella mia città e nonostante le iscrizioni esaurite da tempo erano presenti circa 80 partecipanti. Pochi, sicuramente pochi in considerazione del numero di iscrizioni pervenute e che facevano presagire una partecipazione effettiva oltre le 100 presenze. Non so come leggere questi risultati, probabilmente deludenti, visto che molto spesso mi sento dire che a Roma si organizzano meno eventi di quanti se ne organizzano al nord.&lt;/p&gt;
&lt;p&gt;Quello che sicuramente non è stato deludente è l&amp;#39;interesse mostrato dai partecipanti così come il nostro livello di soddisfazione dopo ogni sessione. Hanno iniziato Davide Mauri&amp;nbsp;e Andrea Benedetti con una sessione su &amp;quot;I miti da sfatare in SQL Server&amp;quot;... una sorta di leggende metropolitane di cui ogni tanto circola notizia anche nei newsgroup e che generano false convinzioni che spesso produce errori facilmente evitabili. Quando saranno disponibili le slide, entro pochi giorni, invito tutti a scaricarle e leggerle. Subito dopo Davide ha tenuto una sessione incentrata sulle novità introdotte in SQL Server 2008 per gli sviluppatori mentre subito dopo pranzo io e Gianluca Hotz abbiamo tenuto una sessione analoga dedicata ai database administrator. Il compito di tenere alta l&amp;#39;attenzione dopo i cannelloni mangiati a pranzo non era facile ma ci siamo riusciti facendo sollevare anche un discreto numero di domande da parte dei partecipanti che si sono protratte anche dopo il termine della sessione e per tutto il break che separava la nostra sessione dalla successiva. In chiusura la sessione di Andrea e Francesco De Chirico sulle novità in tema di BI.&lt;/p&gt;
&lt;p&gt;Come detto mi aspettavo qualche partecipante in più, ma a parte questo chi c&amp;#39;era credo sia stato estremamente soddisfatto dell&amp;#39;evento in generale...&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4063" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Eventi/default.aspx">Eventi</category></item><item><title>Pronti per l'evento UGISS di domani?</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/13/pronti-per-l-evento-ugiss-di-domani.aspx</link><pubDate>Tue, 13 May 2008 06:18:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4061</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4061</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/13/pronti-per-l-evento-ugiss-di-domani.aspx#comments</comments><description>&lt;p&gt;Domani si terrà a Roma un &lt;a class="" href="http://www.ugiss.org/Content/Event/Workshop+UGISS+Rome+Edition.aspx"&gt;evento&lt;/a&gt; UGISS interamente dedicato a SQL Server 2008.&lt;/p&gt;
&lt;p&gt;Le iscrizioni per l&amp;#39;evento sono chiuse da tempo... ma sono ancora aperte quelle per la cena di questa sera &amp;nbsp;&lt;img src="http://community.ugiss.org/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;Ho scelto &lt;a class="" href="http://www.bevilo.com/index.php?misc=search&amp;amp;subaction=showfull&amp;amp;id=1185469697"&gt;Meo Pinelli&lt;/a&gt;, facilmente raggiungibile sia per chi pernotta all&amp;#39;Hotel che ospiterà l&amp;#39;evento ma anche per chi si muove con i mezzi pubblici (è a 10 mt dalla fermata della metro Subaugusta). L&amp;#39;appuntamento è per le 21:00; chi ancora non ha dato la sua adesione&amp;nbsp;in &lt;a class="" href="http://community.ugiss.org/forums/t/1399.aspx"&gt;questo post&lt;/a&gt; del forum può ancora farlo. Oltre a me ci saranno gli altri speaker dell&amp;#39;evento... Gianluca Hotz, Davide Mauri e Andrea Benedetti. Per tutti sarà l&amp;#39;occasione di dare un volto a quelli che finora erano degli anonimi nick... &lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4061" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Eventi/default.aspx">Eventi</category></item><item><title>Backup compressi in SQL Server 2008</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/04/backup-compressi-in-sql-server-2008.aspx</link><pubDate>Sun, 04 May 2008 18:17:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:4022</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=4022</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/05/04/backup-compressi-in-sql-server-2008.aspx#comments</comments><description>&lt;p&gt;Come noto a chi ha già esplorato la funzionalità dei backup compressi in SQL Server 2008, è possibile fare un backup di questo tipo utilizzando l&amp;#39;opzione COMPRESSION direttamente nel comando di backup come nell&amp;#39;esempio che segue&lt;/p&gt;
&lt;p&gt;BACKUP DATABASE DBM TO DISK = &amp;#39;C:\DBM.bak&amp;#39; WITH INIT, COMPRESSION&lt;/p&gt;
&lt;p&gt;ma è anche possibile impostare l&amp;#39;opzione a livello di istanza con il comando&lt;/p&gt;
&lt;p&gt;sp_configure &amp;#39;backup compression default&amp;#39;, 1&lt;br /&gt;RECONFIGURE&lt;/p&gt;
&lt;p&gt;dopo aver impartito questo comando tutti i backup verranno eseguiti in maniera compressa salvo esplicitare, nel comando di backup, l&amp;#39;opzione NO_COMPRESSION.&lt;br /&gt;Il primo backup che si esegue in un device determina il fattore di compressione di tutti i backup che potranno essere ospitati dallo stesso device e questo anche se si decide di sovrascrivere il device utilizzando l&amp;#39;opzione INIT; solo l&amp;#39;opzione FORMAT consente di passare da dei backup compressi a dei backup non compressi su un determinato device. Pertanto se viene eseguito il comando&lt;/p&gt;
&lt;p&gt;BACKUP DATABASE DBM TO DISK = &amp;#39;C:\DBM.bak&amp;#39; WITH INIT, COMPRESSION&lt;/p&gt;
&lt;p&gt;su un device contenente dei backup non compressi, otterremo l&amp;#39;errore&lt;/p&gt;
&lt;p&gt;Msg 3098, Level 16, State 2, Line 1&lt;br /&gt;The backup cannot be performed because &amp;#39;COMPRESSION&amp;#39; was requested after the media was formatted with an incompatible structure. To append to this media set, either omit &amp;#39;COMPRESSION&amp;#39; or specify &amp;#39;NO_COMPRESSION&amp;#39;. Alternatively, you can create a new media set by using WITH FORMAT in your BACKUP statement. If you use WITH FORMAT on an existing media set, all its backup sets will be overwritten.&lt;br /&gt;Msg 3013, Level 16, State 1, Line 1&lt;br /&gt;BACKUP DATABASE is terminating abnormally.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diversamente se il device contiene dei backup compressi, omettere la clausola COMPRESSION non produce alcun errore ed il backup viene eseguito in maniera compressa&lt;/strong&gt; a prescindere dal default a livello di istanza. Si tratta di un comportamento che non mi aspettavo e di cui non ho trovato traccia sul BOL ma allo stato attuale, nella CTP 6 (aka CTP Feb ovvero build 10.0.1300) è così...&lt;img src="http://community.ugiss.org/emoticons/emotion-42.gif" alt="Confused" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=4022" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Storage/default.aspx">Storage</category></item><item><title>Domani si parte per Seattle</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/11/domani-si-parte-per-seattle.aspx</link><pubDate>Fri, 11 Apr 2008 19:33:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:3865</guid><dc:creator>lbianchi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=3865</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/11/domani-si-parte-per-seattle.aspx#comments</comments><description>&lt;p&gt;In queste ore molti degli MVP italiani sono sul volo che da Londra li&amp;nbsp;sta portando&amp;nbsp;a Seattle per l&amp;#39;MVP Summit. Io partirò domani mattina da Roma e arriverò alle 20:12 ora di Seattle (-9 rispetto all&amp;#39;Italia) e mi unirò al resto del gruppo (jet-lag permettendo).&lt;/p&gt;
&lt;p&gt;Quella italiana sarà come al solito una spedizione molto nutrita dove avrò l&amp;#39;opportunità di rivedere persone che vedo solo in rare circostanze e partecipare a sessioni tecniche insieme a gente del calibro di Itzik Ben-Gan, Kalen Delaney, Fernando Guerrero, Paul Randal e tanti altri ancora e una sensazione a cui difficilmente mi abituerò... anche se questo è il mio quarto MVP Summit. Quest&amp;#39;anno non ci saranno Lorenzo Benaglia e Andrea Montanari, amici SQLlari di vecchia data, che speravo ci ripensassero in extremis. Non so che summit sarà senza di loro, ma cercherò di far tesoro di tutte le sessioni tecniche ma soprattutto, come consuetudine, saranno giornate dense di party e ricche bevute... &lt;img src="http://community.ugiss.org/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=3865" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Eventi/default.aspx">Eventi</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Community/default.aspx">Community</category></item><item><title>Eseguire un backup senza indici</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/10/eseguire-un-backup-senza-indici.aspx</link><pubDate>Thu, 10 Apr 2008 18:48:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:3856</guid><dc:creator>lbianchi</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=3856</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/10/eseguire-un-backup-senza-indici.aspx#comments</comments><description>&lt;p&gt;Sul newsgroup privato degli MVP sto seguendo da qualche giorno il thread che Greg Linwood ha lanciato in merito ad un suo &lt;a class="" href="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/04/04/1207.aspx"&gt;post&lt;/a&gt;, segnalato anche da &lt;a class="" href="http://community.ugiss.org/blogs/abenedetti/archive/2008/04/09/backup-without-index-data.aspx"&gt;Andrea&lt;/a&gt;, sulla possibilità di eseguire backup solo dei dati di un database.&amp;nbsp;Lasciando fuori&amp;nbsp;gli indici si potrebbe risparmiare mediamente un 50% di spazio (e tempo) di informazioni, tutto sommato, per certi versi ridondanti e comunque riproducibili&lt;/p&gt;
&lt;p&gt;Da un punto di vista implementativo non è affatto semplice dare seguito alla richiesta e non mi addentro nei dettagli delle motivazioni che alcuni membri del team di sviluppo di SQL Server hanno dato, sempre nel newsgroup privato MVP, per motivare le ragioni per le quali, allo stato attuale, la &lt;a class="" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=331220"&gt;richiesta&lt;/a&gt; è stata chiusa con un &amp;quot;won&amp;#39;t fix&amp;quot;. &lt;/p&gt;
&lt;p&gt;Sicuramente in un&amp;#39;ottica di disaster recovery avrebbe poco senso ripristinare un database privo di indici perchè questi andrebbero sicuramente ricreati o ricostruiti prima di restituire l&amp;#39;operatività del database ed i tempi di ricostruzione vanificherebbero qualunque risparmio di tempo precedente. Certamente l&amp;#39;attività di ricostruzione degli indici può essere posticipata e le &amp;quot;funzionalità vitali&amp;quot; del database, ovvero mettere a disposizione i dati a chi ne faccia richiesta, sarebbero certamente salvaguardate già con il ripristino, minimale, dei soli dati. Tutte le query sarebbero risolte con un table scan, ma l&amp;#39;operatività sarebbe comunque garantita.&lt;br /&gt;Inoltre in quegli scenari dove i tempi di downtime devono tendere a zero, la continuità non può essere affidata ad una seppur eccellente strategia di disaster recovery ma ci saranno soluzioni basate su cluster, log shipping, database mirroring, san in mirror, ecc (e sicuramente 2 o più di queste funzionalità integrate fra loro) in grado di assicurare la continuità del servizio nelle diverse circostanze relegando il restore alle attività più catastrofiche.&lt;br /&gt;La soluzione che prevede il backup dei soli dati potrebbe essere percorribile in quegli ambienti dove non è vitale una rapida ripresa del servizio a seguito di un danno, ma ci si può permettere un fermo più ampio, necessario alle attività di creazione/ricostruzione degli indici. In questo caso avrei comunque il vantaggio di avere un backup di dimensioni contenute che mi farebbe risparmiare sullo spazio disco/nastro necessario per le diverse esigenze di archiviazione insite/offsite. Ragionando nell&amp;#39;ottica &amp;quot;il backup lo faccio quotidianamente, il restore spero di non farlo mai (se non in ambiente di test)&amp;quot; si tratta certamente di una soluzione non solo percorribile ma anche raccomandabile che consente di risparmiare tempo e risorse in occasione dei backup a fronte di un accettabile ritardo nei tempi di ripristino.&lt;/p&gt;
&lt;p&gt;In ogni caso in SQL Server 2005 è possibile velocizzare il processo di ripristino dei dati ricorrendo al &amp;quot;&lt;a class="" href="http://msdn2.microsoft.com/en-us/library/ms177425.aspx"&gt;piecemeal restore&lt;/a&gt;&amp;quot;, ovvero un restore parziale in grado&amp;nbsp;di restituire l&amp;#39;operatività del database anche se il processo di ripristino non si è completato. Questo obiettivo possiamo realizzarlo suddividendo il database su diversi filegroup e posizionando i dati su un filegroup e gli indici non clustered su un altro filegroup. Così facendo, in occasione di un ripristino, potremmo accedere al db già immediatamente dopo il ripristino del filegroup contenente i dati e prima che sia terminato il ripristino del filegroup contenente gli indici (il filegroup primary deve essere ripristinato prima di tutti).&lt;br /&gt;Tuttavia questa soluzione richiede la reingegnerizzazione del database affinchè venga strutturato secondo determinate regole e benchè lo spostamento degli indici su un altro filegroup sia una attività che può essere fatta agevolmente (e online) mediante la ricostruzione degli indici stessi, la soluzione appare poco percorribile perchè possa essere utilizzata su vasta scala così come&amp;nbsp;in tutti quegli ambienti, anche di&amp;nbsp;medie dimensioni,&amp;nbsp;dove non esiste una figura di DBA a tempo pieno in grado di pianificare e documentare la strategia di ripristino (last but not least il &amp;quot;partial restore&amp;quot; è presente solo nella versione Enterprise).&lt;/p&gt;
&lt;p&gt;Tornando alle ragioni per le quali potrei voler eseguire un backup dei soli dati, tenderei ad escludere anche quelle attività che richiedono il ripristino di un database di produzione nell&amp;#39;ambiente di test perchè un ambiente di collaudo che non sia il più possibile simile a quello di produzione vanificherebbe buona parte della destinazione d&amp;#39;uso specifica di questi ambienti (sempre che non voglia farmi carico della duplice attività restore + reindex). Restano i casi legati ad un eventuale ripristino in ambiente di sviluppo oppure quando il database deve essere inviato ad un fornitore esterno o ad una sede periferica della società, ovvero quei casi in cui ridurre le dimensioni fisiche dei dati da inviare si traduce in un immediato e tangibile vantaggio.&lt;/p&gt;
&lt;p&gt;Non sarebbe male, quindi, avere una clausola che ci permetta di eseguire un &lt;/p&gt;
&lt;p&gt;BACKUP DATABASE MyDB TO DISK = myDevice WITH DATA_ONLY&lt;/p&gt;
&lt;p&gt;Qui nasce, però, uno degli interrogativi da porsi: è l&amp;#39;integrità dei dati? Per poterla garantire devo aver bisogno, almeno, di tutte le primary key e di tutti gli unique constraint che, se non sono di tipo clustered, avrebbero a loro volta bisogno dei rispettivi indici clustered per non perdere il puntamento alle pagine dati. Oppure voglio rinunciare anche a questa garanzia che un DBMS dovrebbe darmi?&lt;/p&gt;
&lt;p&gt;Forse tutto sommato utilizzerei veramente poco un backup privo di indici, anche in considerazione del fatto che, in SQL Server 2008, verrà introdotta la possibilità di comprimere dati e backup ottenendo i benefici voluti e da test che ho eseguito la compressione dei dati ed i backup compressi sono &amp;quot;cumulabili&amp;quot; fra loro ed un backup compresso di un database compresso può essere ulteriormente zippato (anche se di pochi punti percentuali) o posizionato su una cartella compressa a livello NTFS riducendolo da 14,6 GB iniziali ad 1,02 GB. Stiamo parlando di una riduzione del 93% che benchè sia maturata in circostanze favorevoli ad un elevato fattore di compressione dei dati, rappresenta un risultato di sicuro interesse...&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=3856" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/High+Availability/default.aspx">High Availability</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Storage/default.aspx">Storage</category></item><item><title>Quanti dati sono cambiati rispetto all'ultimo backup full?</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/09/quanti-dati-sono-cambiati-rispetto-all-ultimo-backup-full.aspx</link><pubDate>Wed, 09 Apr 2008 12:25:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:3830</guid><dc:creator>lbianchi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=3830</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/09/quanti-dati-sono-cambiati-rispetto-all-ultimo-backup-full.aspx#comments</comments><description>&lt;p&gt;Come noto il backup differenziale esegue la copia di tutti gli extent in cui sia avvenuta una modifica dopo l&amp;#39;ultimo backup. L&amp;#39;extent viene copiato per intero anche se la modifica ha riguardato un solo bit in una sola pagina ed a prescindere dal numero di volte in cui qualcosa sia cambiato in una delle pagine di un extent. Rispetto ad un backup del transaction log, che riapplica sequenzialmente tutta la cronologia di modifiche che hanno interessato il database, il backup differenziale esegue quindi una &amp;quot;snapshot&amp;quot; di tutti gli extent modificati e, in fase di restore, tali pagine/extent vanno a rimpiazzare quelle del precedente backup full.&lt;/p&gt;
&lt;p&gt;Proprio per questo motivo ci potremmo trovare nella condizione in cui un backup differenziale rappresenti il 70/80% (o anche più) rispetto al backup completo. Il processo di ripristino sarebbe quindi più veloce se anzichè il differenziale avessimo eseguito un ulteriore backup completo e la risposta alla domanda iniziale dovrebbe essere alla base di un controllo di flusso nei nostri job per determinare il tipo di backup da eseguire.&lt;/p&gt;
&lt;p&gt;La risposta al quesito può arrivare da &lt;a class="" href="http://www.sqlskills.com/blogs/paul/2008/04/08/NewScriptHowMuchOfTheDatabaseHasChangedSinceTheLastFullBackup.aspx"&gt;questa idea&lt;/a&gt; che Paul Randal ha pubblicato nel suo post. Attenzione al fatto che, come Paul ci tiene ad evidenziare, porebbero esserci dei risultati inattesi quando il singolo file di database è superiore a 4 TB... &lt;img src="http://community.ugiss.org/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;/p&gt;
&lt;p&gt;Non per sminuire quanto fatto da Paul, ci mancherebbe altro... però preferisco di gran lunga una strategia di backup &amp;quot;fissa&amp;quot; dove ogni tipo di backup viene fatto secondo le schedulazioni previste.&lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=3830" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/High+Availability/default.aspx">High Availability</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/DB+Engine/default.aspx">DB Engine</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Scripting/default.aspx">Scripting</category></item><item><title>Cluster failover time</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/01/cluster-failover-time.aspx</link><pubDate>Tue, 01 Apr 2008 20:54:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:3687</guid><dc:creator>lbianchi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=3687</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/01/cluster-failover-time.aspx#comments</comments><description>&lt;p&gt;Mi è capitato di avere un cluster in cui il tempo necessario al failover era molto elevato e superava il minuto di attesa. Analizzando la situazione ho scoperto che erano le risorse di tipo Virtual Server Name a tardare ad andare online.&amp;nbsp;L&amp;#39;event viewer&amp;nbsp;era praticamente pulito e non erano presenti altri warning o errori che potessero indirizzarmi verso la soluzione finchè, nel cluster log (in C:\Windows\cluster), non mi sono imbattuto in eventi tipo questo&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;0000065c.00000720::2008/04/01-15:58:02.893 WARN Network Name &amp;lt;Cluster Name&amp;gt;: Failed to register DNS PTR record 113.240.168.192.in-addr.arpa. for host virtualname.dominio.it over adapter &amp;#39;LAN&amp;#39;, status 1460&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Alla base di tutto c&amp;#39;erano quindi i problemi di registrazione del record PTR dei virtual server name perchè, per quella subnet, non era stata definita una reverse lookup zone. Creata la reverse lookup zone i tempi di failover sono diventati normali.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=3687" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/High+Availability/default.aspx">High Availability</category><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Cluster/default.aspx">Cluster</category></item><item><title>MVP... e 6</title><link>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/01/mvp-e-6.aspx</link><pubDate>Tue, 01 Apr 2008 20:39:00 GMT</pubDate><guid isPermaLink="false">696bf4df-f0eb-4942-9326-ff40615b13e5:3686</guid><dc:creator>lbianchi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.ugiss.org/blogs/lbianchi/rsscomments.aspx?PostID=3686</wfw:commentRss><comments>http://community.ugiss.org/blogs/lbianchi/archive/2008/04/01/mvp-e-6.aspx#comments</comments><description>&lt;p&gt;Poche ore fa ho ricevuto la mail che mi conferma, per il sesto anno consecutivo, l&amp;#39;MVP Award.&lt;/p&gt;
&lt;p&gt;Oggi come 6 anni fa l&amp;#39;entusiasmo è rimasto immutato benchè il&amp;nbsp;programma MVP, in questi anni, sia cambiato molto. Per Microsoft l&amp;#39;award è il ringraziamento per l&amp;#39;attività che si svolge nelle community, ma&amp;nbsp;ognuna delle persone che ha posto un quesito in un newsgroup o in un forum, in tutti questi anni, ha lasciato anche lui qualcosa in me. La forza delle community è quella di condividere le esperienze, i problemi e, soprattutto, le soluzioni che altrimenti farebbero sbattere la testa ad ognuno sugli stessi problemi.&lt;/p&gt;
&lt;p&gt;Colgo quindi l&amp;#39;occasione per ringraziare tutti quelli che postano nei newsgroup e che condividono quotidianamente,&amp;nbsp;con tutti gli altri, le proprie esperienze. &lt;/p&gt;
&lt;p&gt;Bye&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.ugiss.org/aggbug.aspx?PostID=3686" width="1" height="1"&gt;</description><category domain="http://community.ugiss.org/blogs/lbianchi/archive/tags/Community/default.aspx">Community</category></item></channel></rss>