<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/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>Supporto Tecnico Enterprise : SQL Team</title><link>http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx</link><description>Tags: SQL Team</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SQL 2005 – Utilizzo del setup da riga di comando per upgrade/downgrade di versione</title><link>http://blogs.technet.com/itasupport/archive/2009/11/23/sql-2005-utilizzo-del-setup-da-riga-di-comando-per-upgrade-downgrade-di-versione.aspx</link><pubDate>Mon, 23 Nov 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3293729</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3293729.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3293729</wfw:commentRss><description>&lt;p&gt;L’esecuzione del setup di SQL Server da riga di comando permette di specificare diversi parametri e configurazioni e viene principalmente utilizzato per effettuare un upgrade di versione o per aggiornare versioni “Evaluation” a quelle definitive; in casi eccezionali può essere usato anche per l’operazione inversa (downgrade) preservando i dati e le configurazioni esistenti.&lt;/p&gt;  &lt;p&gt;prendiamo ora in considerazione il caso più “semplice”, l’upgrade di versione ed i relativi passi. Si fa riferimento ad un istanza di SQL Server in configurazione cluster, con le opzioni non necessarie alle configurazioni standalone commentate singolarmente&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;E' necessario avere a disposizione il DVD della versione RTM o i file di installazione in una directory locale &lt;/li&gt;    &lt;li&gt;Aprire un Command Prompt e posizionarsi nella directory Servers del DVD o della copia locale &lt;/li&gt;    &lt;li&gt;eseguire il seguente comando:&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;start /wait setup.exe INSTANCENAME=SQL2005CU11 UPGRADE=SQL_Engine SKUUPGRADE=1 /qb VS=VSQL2005 ADMINPASSWORD=pwd GROUP=&amp;quot;SQL 2005 ENG CU11&amp;quot; ADDNODE=W2K3NODE1_1,W2K3NODE2_2&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Vediamo il significato dei vari parametri, applicati ad un cluster di laboratorio che ho usato per i test&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;INSTANCENAME è il nome dell’istanza da aggiornare, specificare MSSQLSERVER nel caso si tratti di quella di default &lt;/li&gt;    &lt;li&gt;UPGRADE permette di specificare l’elenco delle componenti da aggiornare separati dalla virgola: in questo caso SQL_Engine informa il setup di aggiornare solo la parte di “Database Engine” &lt;/li&gt;    &lt;li&gt;SKUUPGRADE=1 è il parametro che permette l’aggiornamento &lt;/li&gt;    &lt;li&gt;VS è il nome del Virtual Server da aggiornare, ossia il nome della risorsa “Network Name” all’interno del gruppo del cluster che contiene SQL Server; questo parametro non serve per le configurazioni standalone &lt;/li&gt;    &lt;li&gt;ADMINPASSWORD è la password dell’account (con diritti amministrativi) correntemente logato al nodo del cluster che sta eseguendo il setup; serve per potere gestire il nodo remoto (o i nodi) durante il setup. Non è richiesto per le configurazioni Standalone &lt;/li&gt;    &lt;li&gt;GROUP è il gruppo del cluster all’interno del quale si trovano le risorse di SQL Server e nel caso in cui ci siano degli spazi il nome deve essere racchiuso tra doppi apici. Non è richiesto nelle installazioni Standalone &lt;/li&gt;    &lt;li&gt;ADDNODE è utilizzato per specificare l’elenco dei nodi che possono essere “owwer” dell’istanza. Non richiesto per le Standalone &lt;/li&gt;    &lt;li&gt;/qb abilita una modalità “semi silent” visualizzado solo richieste di input quando necessario&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Vediamo ora le operazioni necessarie per potere fare il downgrade della versione mantenendo i database e le configurazioni esistenti; le operazioni sono un po’ più lunghe che nel precedente caso.    &lt;br /&gt;Per prima cosa occorre rimuovere l’istanza esistente usando il parametro SAVESYSDB, per cui lasciando inalterati i precedenti punti 1 e 2 la riga di comando diventa&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;start /wait setup.exe /qb INSTANCENAME=SQL2005CU11 VS=VSQL2005 REMOVE=All ADMINPASSWORD=pwd SAVESYSDB=1&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Tutti parametri già visti tranne SAVESYSDB=1 che è quello che istruisce il setup di mantenere i database di sistema nella directory DATA originaria e REMOVE, che serve per indicare le componenti che devono essere rimosse, in questo caso tutte (All): è consigliabile comunque fare una copia dei file esistenti.   &lt;br /&gt;A questo punto si può procedere con l’installazione&amp;#160; della nuova istanza seguendo i passi seguenti:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Riavviare i nodi dopo la rimozione di SQL effettuata in precedenza &lt;/li&gt;    &lt;li&gt;Seguire i punti 1 e 2 gia visti per l’upgrade &lt;/li&gt;    &lt;li&gt;eseguire la seguente riga di comando:      &lt;p&gt;start /wait setup.exe /qb &lt;b&gt;VS&lt;/b&gt;=VSQL2005 &lt;b&gt;INSTANCENAME&lt;/b&gt;=SQL2005CU11 &lt;b&gt;GROUP&lt;/b&gt;=&amp;quot;SQL 2005 ENG CU11&amp;quot; &lt;b&gt;ADDNODE&lt;/b&gt;=w2k3node1_1,w2k3node2_2 &lt;b&gt;INSTALLVS&lt;/b&gt;=SQL_Engine &lt;b&gt;ADDLOCAL&lt;/b&gt;=SQL_Engine,SQL_Replication,SQL_FullText,Client_Components,Connectivity,SQL_Tools90,SQL_Documentation,SQL_BooksOnline &lt;b&gt;IP&lt;/b&gt;=10.10.10.80,ToHost &lt;b&gt;INSTALLSQLDIR&lt;/b&gt;=&amp;quot;C:\Program Files\Microsoft SQL Server&amp;quot; &lt;b&gt;INSTALLSQLDATADIR&lt;/b&gt;=&amp;quot;g:\Program Files\Microsoft SQL Server&amp;quot; &lt;b&gt;ADMINPASSWORD&lt;/b&gt;=pwd &lt;b&gt;SQLACCOUNT&lt;/b&gt;=CLUSTERDOM\sqlsvc &lt;b&gt;SQLPASSWORD&lt;/b&gt;=pwd &lt;b&gt;AGTACCOUNT&lt;/b&gt;=CLUSTERDOM\sqlsvc &lt;b&gt;AGTPASSWORD&lt;/b&gt;=pwd &lt;b&gt;SQLBROWSERACCOUNT&lt;/b&gt;=&amp;quot;NT AUTHORITY\SYSTEM&amp;quot; &lt;b&gt;SQLCLUSTERGROUP&lt;/b&gt;=CLUSTERDOM\CLUSTER &lt;b&gt;AGTCLUSTERGROUP&lt;/b&gt;=CLUSTERDOM\CLUSTER &lt;b&gt;FTSCLUSTERGROUP&lt;/b&gt;=CLUSTERDOM\CLUSTER &lt;b&gt;USESYSDB&lt;/b&gt;=&amp;quot;G:\Microsoft SQL Server\MSSQL.1\MSSQL&amp;quot;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Tra i vari parametri non ancora visti abbiamo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;INSTALLVS indica per quale componente si vuole creare un Virtual Server (in questo caso il Database Engine). Non è richiesto nel caso di installazione locale &lt;/li&gt;    &lt;li&gt;ADDLOCAL permette di specificare quali componenti aggiungere alla parte locale dell’installazione: l’elenco riportato sopra corrisponde ad un’installazione tipica che comprende Database Enginge, Management Tools, Performance Tool e BooksOnline. &lt;/li&gt;    &lt;li&gt;IP serve a specificare l’IP assegnato all’istanza ed il nome assegnato alla connesione di rete da usare, separati da una virgola; &lt;strong&gt;devono rimanere identici all’ IP e al nome della rete dell’istanza rimossa in precedenza&lt;/strong&gt;. Non richiesto per un server Standalone. &lt;/li&gt;    &lt;li&gt;INSTALLSQLDIR è la directory di installazione locale di SQL Server &lt;/li&gt;    &lt;li&gt;INSTALLSQLDATADIR e la directory predefinita per il posizionamento dei file di dati e &lt;strong&gt;deve coincidere con quella precedente&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;SQLACCOUNT e SQLPASSWORD rappresentano l’account di servizio di SQL Server e relativa password &lt;/li&gt;    &lt;li&gt;AGTACCOUNT e AGTPASSWORD rappresentano l’account di servizio del SQL Server Agent e relativa password &lt;/li&gt;    &lt;li&gt;SQLBROWSERACCOUNT è l’account associato al servizio SQL Server Browser. Nel caso in cui si lascia l’account System (consigliato) non è necessario specificare la password &lt;/li&gt;    &lt;li&gt;SQLCLUSTERGROUP, AGTCLUSTERGROUP e FTSCLUSTERGROUP rappresentano i gruppo di dominio necessari per l’installazione di un’istanza cluster e non sono richiesti nel caso di Standalone &lt;/li&gt;    &lt;li&gt;USESYSDB permette di specificare il percorso base dal quale prendere i file di sistema e i database utente esistenti &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Entrambe le modalità di &amp;quot;upgrade” riportano SQL Server alla versione RTM per cui al termine è necessario ri-applicare la stessa Service Pack e Cumulative Update esistenti prima dell’attività di manutenzione.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mauro-munzi.aspx"&gt;Mauro Munzi&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3293729" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mauro+Munzi/default.aspx">Mauro Munzi</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL 2000 - Spostamento della directory FTDATA su un altro disco per un istanza Cluster</title><link>http://blogs.technet.com/itasupport/archive/2009/11/16/sql-2000-spostamento-della-directory-ftdata-su-un-altro-disco-per-un-istanza-cluster.aspx</link><pubDate>Mon, 16 Nov 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3293728</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3293728.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3293728</wfw:commentRss><description>&lt;p&gt;Mi è capitato alcune volte di incontrare clienti che hanno avuto problemi durante lo spostamento della directory FTDATA di SQL Server 2000 da un disco all’altro (così come da una directory all’altra all’interno dello stesso disco); praticamente tutti hanno fatto riferimento all’articolo tecnico &lt;a title="http://support.microsoft.com/kb/240867/en-us" href="http://support.microsoft.com/kb/240867/en-us"&gt;http://support.microsoft.com/kb/240867/en-us&lt;/a&gt; e si sono scontrati con alcuni punti che sembrano essere un po’ difficili da applicare, in particolare quelli relativi alle modifiche sulle chiavi di registry.&lt;/p&gt;  &lt;p&gt;A tal proposito già diverse volte mi sono trovato a suggerire una procedura alternativa, che non vuole rimpiazzare l’articolo tecnico, che i feedback ottenuti fino ad ora mi hanno confermato essere di più semplice implementazione; in questo caso ci stiamo riferendo ad una istanza di SQL Server 2000 in configurazione Cluster, ma le stesse informazioni possono essere applicate anche ad un server stand-alone.&lt;/p&gt;  &lt;p&gt;Vediamo in dettaglio le azioni da fare: in questo caso si parte da una FTDATA posizionata in G:\Program Files\Microsoft SQL Server\MSSQL$SQL2000SP4\FTDATA, riferita a una Named Instance “SQL2000SP4”. Nel caso di un istanza di default non avremo MSSQL$SQL2000SP4 ma semplicemente MSSQL. La directory FTDATA alla fine della procedura si troverà su un nuovo disco Y: mantenendo lo stesso percorso, ma le stessa procedura può essere utilizzata per spostarla in qualsiasi directory senza però modificare la struttura delle cartelle al di sotto di FTDATA.&lt;/p&gt;  &lt;p&gt;Ecco le azioni:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;posizione originaria in G:\Program Files\Microsoft SQL Server\MSSQL$SQL2000SP4\FTDATA &lt;/li&gt;    &lt;li&gt;La risorsa FullText all’interno del gruppo di SQL Server deve rimanere Online in questa fase (o semplicemente il servizio FullText in caso di installazione Standalone) &lt;/li&gt;    &lt;li&gt;Sul nodo con in carico l’istanza occorre modificare tutte le ricorrenze del disco G: in Y: all’interno della chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0. Come già anticipato si può modifare anche il percorso in qualsiasi modo, ma fino alla cartella FTDATA e non oltre. &lt;/li&gt;    &lt;li&gt;Offline della risorsa Fulltext: in questa fase nei file CLUSTX.X che si trovano in FTDATA vengono salvate la chiavi di registry che abbiamo modificato al punto 3, evitando così di dovere caricare i vari file nel registry per fare le modifiche. i file CLUSTX.X sono specifici per SQL Server 2000 e contengono la configurazione del FullText quando è configurato su un Cluster, per cui non saranno mai presenti in un server Standalone, per il quale è sufficiente spegnere il servizio dopo il punto 3 &lt;/li&gt;    &lt;li&gt;spostare il contenuto della cartella FTDATA sull’altro disco (Y: )&amp;#160; e/o directory a patto che il cambio sia coerente con le modifiche fatte al punto 3. &lt;/li&gt;    &lt;li&gt;Modificare ApplicationPath in HKEY_LOCAL_MACHINE\Cluster\Resources\xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx\Parameters, dove xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx coincide con il GUID delle risorsa FullText, per rispecchiare la nuova posizione di FTDATA per quell’istanza. &lt;/li&gt;    &lt;li&gt;Modificare il valore FullTextDefaultPath nella chiave HKLM\Software\Microsoft\Microsoft SQL Server\&amp;lt;Istanza&amp;gt; per puntare alla nuova posizione (questo passo non è richiesto per un server standalone) &lt;/li&gt;    &lt;li&gt;Offline e Online di SQL Server, Online del FullText. A questo punto nelle proprietà del FullText sotto “Support Services” (in Enterprise Manager) si dovrebbe vedere il puntamento al nuovo percorso. &lt;/li&gt;    &lt;li&gt;Se i cataloghi non sono nella posizione predefinita occorre modificare il campo path della tabella sysfulltextcatalogs per ogni database &lt;/li&gt;    &lt;li&gt;Da Query Analyzer      &lt;ul&gt;       &lt;li&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;sp_configure 'allow updates', 1&lt;/strong&gt; &lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;go &lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;reconfigure with override &lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;go &lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Update sysfultext catalogs set path =’nuova path’ where ftcatid=X&lt;/font&gt;&lt;/strong&gt;, dove ‘nuova path’ è il nuovo percorso che si vuole impostare e X è l’id del catalogo che si vuole modificare. Questa operazione deve essere fatta per ognuno dei cataloghi in ogni database: se il campo ‘path’ contiene il valore NULL non c’è bisongo di apportare modifiche &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Offline e Online di SQL Server &lt;/li&gt;    &lt;li&gt;Offline e Online del FullText &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;NOTA: gli ultimi 3 passi sono necessari solo se i cataloghi non sono stati creati in origine nella posizione predefinita&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mauro-munzi.aspx"&gt;Mauro Munzi&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3293728" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mauro+Munzi/default.aspx">Mauro Munzi</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL Server - Algoritmo Proportional fill, Autogrow e loro effetto sulle dimensioni dei file di un filegroup</title><link>http://blogs.technet.com/itasupport/archive/2009/10/19/sql-server-algoritmo-proportional-fill-autogrow-e-loro-effetto-sulle-dimensioni-dei-file-di-un-filegroup.aspx</link><pubDate>Sun, 18 Oct 2009 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3287291</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3287291.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3287291</wfw:commentRss><description>&lt;h3&gt;Algoritmo di Proportional fill&lt;/h3&gt;  &lt;p&gt;L'algoritmo di Proportional fill (&lt;a href="http://blogs.msdn.com/saponsqlserver/archive/2007/12/01/proportional-fill-and-how-to-check-whether-it-works.aspx"&gt;&lt;b&gt;Proportional fill and how to check whether it works&lt;/b&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ms187087.aspx"&gt;&lt;b&gt;Using Files and Filegroups&lt;/b&gt;&lt;/a&gt;) è l'algoritmo utilizzato per allocare extent (&lt;a href="http://msdn.microsoft.com/en-us/library/ms190969.aspx"&gt;&lt;b&gt;Understanding Pages and Extents&lt;/b&gt;&lt;/a&gt;) all'interno dei datafile di un filegroup (&lt;a href="http://msdn.microsoft.com/en-us/library/ms179316.aspx"&gt;&lt;b&gt;Files and Filegroups Architecture&lt;/b&gt;&lt;/a&gt;) che contiene da due a più datafile.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Sql server alloca un quantità di extent , proporzionale allo spazio libero all'interno di ciascun datafile di un filegroup, mantenendo in questo modo la stessa percentuale di spazio utilizzato su ciascun file.&lt;/p&gt;  &lt;p&gt;Il calcolo della proporzione da utilizzare per allocare lo spazio nei file viene effettuato con le seguenti modalità:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;la percentuale di Proportional fill viene ricalcolata dopo aver allocato 8192 extent&lt;/li&gt;    &lt;li&gt;il numero degli extent liberi del file con più spazio libero, viene diviso per il numero degli extent liberi degli altri file &lt;/li&gt;    &lt;li&gt;il rapporto considera solo numeri interi&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Tramite l'utilizzo dell'algoritmo del Proportional fill , i file all'interno di un filegroup si riempono contemporaneamente.&lt;/p&gt;  &lt;p&gt;Nel caso di datafile con uguali dimensioni iniziali, dovremmo aspettarci un uguale utilizzo dello spazio su tali file man mano che il database cresce di dimensione.&lt;/p&gt;  &lt;p&gt;L'algoritmo di Proportional fill considera solo interi, per cui si possono determinare uguali allocazioni anche con diverso spazio libero tra i file , ad esempio quando il rapporto tra lo spazio libero tra i file non è esattamente di 1 a 2 .   &lt;br /&gt;Avendo, all'interno di un filegroup, un datafile con 10 Gb di spazio libero e un datafile con 19,9 Gb di spazio libero , il rapporto tra lo spazio libero dei due datafile non è esattamente di 1 a 2, per cui il tasso di allocazione sui datafile sarà identico. In questa situazione, lo spazio verrà allocato nella stessa percentuale anche in file aventi una diversa quantità di spazio libero, con conseguente sbilanciamento dello spazio occupato tra di essi.&lt;/p&gt;  &lt;p&gt;Siccome l'algoritmo è ricalcolato frequentemente, gli errori dovuti al considerare solo numeri interi, dovrebbero bilanciarsi, arrivando generalmente a situazioni in cui tutti i file hanno la stessa percentuale di spazio utilizzato e arrivano in contemporanea ad occupare tutto lo spazio libero.&lt;/p&gt;  &lt;h3&gt;Autogrow&lt;/h3&gt;  &lt;p&gt;Le impostazioni di autogrow dei file di un database controllano il comportamento di tali file nel momento in cui raggiungono la loro massima dimensione &lt;a href="http://msdn.microsoft.com/en-us/library/ms180254(SQL.90).aspx"&gt;&lt;b&gt;Database Properties (Files Page)&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ho spesso affrontato problemi di performance causati da una crescita per autogrow dei datafile o log file di un database. Il consiglio per evitare che l’autogrow venga scatenato durante l’attività sul database, causando problemi di performance, è di controllare periodicamente che ogni file abbia necessario spazio libero all'interno. In tal modo, lo spazio verrà allocato internamente al file e si eviterà la necessità di crescita automatica a causa del raggiungimento della massima dimensione.&lt;/p&gt;  &lt;p&gt;L’autogrow dovrebbe essere utilizzato solo per evitare problemi causati da crescite inaspettate e non pianificate del database e non come sostituto di un’opportuna analisi sull’andamento delle dimensioni del database.&lt;/p&gt;  &lt;p&gt;Attenzione è anche da riservare alla percentuale impostata di autogrow.&lt;/p&gt;  &lt;p&gt;Consideriamo un database che ha raggiunto la dimensione massima e su cui l’applicazione tenta di inserite dati. All’inserimento di dati, siccome non è più presente spazio libero, l’autogrow viene attivato.&lt;/p&gt;  &lt;p&gt;Se l’autogrow è impostato al 10% delle dimensioni del database e il database è di circa 30 GB, l’autogrow tenterà di aumentare le dimensioni del database di 3 GB. Tale espansione potrà richiedere molto tempo e terminare prima del timeout applicativo , determinando il fallimento dell’operazione di insert con un generico errore di timeout.&lt;/p&gt;  &lt;p&gt;Di seguito alcuni articoli relativi alle considerazioni sulle impostazioni di autogrow &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/315512"&gt;Considerations for the &amp;quot;autogrow&amp;quot; and &amp;quot;autoshrink&amp;quot; settings in SQL Server&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/13/629866.aspx"&gt;Data files: To Autogrow Or Not To Autogrow?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/822641"&gt;Additional diagnostics added to diagnose long-running or canceled database autogrow operations in SQL Server&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;L'autogrow oltre a causare problemi di performance , può indirettamente causare uno sbilanciamento tra le dimensioni dei datafile di uno stesso filegroup, sebbene tali file siano stati impostati inizialmente alla stessa dimensione e con identiche configurazioni di autogrow.&lt;/p&gt;  &lt;p&gt;Di seguito la spiegazione di come ciò possa avvenire&lt;/p&gt;  &lt;h3&gt;Autogrow e sbilanciamento dello spazio allocato tra i file di un filegroup nonostante il funzionamento del Proportional Fill&lt;/h3&gt;  &lt;p&gt;Sql server, allo startup, crea una lista dei datafile disponibili e calcola la percentuale di Proportional fill come sopra specificato.&lt;/p&gt;  &lt;p&gt;Dopo il verificarsi di un autogrow, Sql server conserva in memoria l'informazione di quale file nella lista sopra indicata è aumentato di dimensione per autogrow.&lt;/p&gt;  &lt;p&gt;In caso di mancanza di spazio su un database, il file successivo viene preso in considerazione per eventuali allocazioni.&lt;/p&gt;  &lt;p&gt;Al restart di Sql server, l'informazione relativa al file che ha subito l'autogrow, non viene mantenuta, per cui il primo file della lista viene nuovamente preso in considerazione in casi di mancanza di spazio , anche se l'autogrow si è appena verificato su di esso.&lt;/p&gt;  &lt;p&gt;A causa di questo meccanismo può capitare che nonostante il Proportional fill, uno dei file di un filegroup , possa raggiungere dimensioni maggiori rispetto agli altri sebbene le configurazioni iniziali siano state identiche.&lt;/p&gt;  &lt;h3&gt;Soluzione&lt;/h3&gt;  &lt;p&gt;Al fine di evitare lo sbilanciamento delle dimensioni di file configurati inizialmente con le stesse dimensioni all'interno di un filegroup si suggerisce di :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;aumentare manualmente e contemporaneamente la dimensione dei file di un filegroup &lt;/li&gt;    &lt;li&gt;verificare lo spazio libero all'interno dei file e aumentarli prima che si verifichi l'autogrow     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Per Sql server 2005, la seguente select , mostra lo spazio libero e allocato all'interno dei file      &lt;br /&gt;      &lt;br /&gt;&lt;font size="3" face="Courier New"&gt;select       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;dbfiles.file_id,       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;[FILE_SIZE_MB] =        &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;convert(decimal(12,2),round(dbfiles.size/128.000,2)),       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;[SPACE_USED_MB] =       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;convert(decimal(12,2),round(fileproperty(dbfiles.name,'SpaceUsed')/128.000,2)),       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;[FREE_SPACE_MB] =       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;convert(decimal(12,2),round((dbfiles.size-fileproperty(dbfiles.name,'SpaceUsed'))/128.000,2)) ,       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;NAME = left(dbfiles.NAME,15),       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;FILENAME = left(dbfiles.physical_name,30)       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;from       &lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Courier New"&gt;sys.database_files dbfiles       &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;In Sql server 2008, è possibile utilizzare il trace flag -T1117 per attivare l' autogrow di tutti i file di un filegroup contemporaneamente, garantendo in questo modo che tutti i file rimangano alla stessa dimensione &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/raffaella-canobbio.aspx"&gt;Raffaella Canobbio&lt;/a&gt;    &lt;br /&gt;Senior Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3287291" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Raffaella+Canobbio/default.aspx">Raffaella Canobbio</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL Server - Errore 701 e Memory Clerk Userstore_sxc</title><link>http://blogs.technet.com/itasupport/archive/2009/07/20/sql-server-errore-701-e-memory-clerk-userstore-sxc.aspx</link><pubDate>Mon, 20 Jul 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3266369</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3266369.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3266369</wfw:commentRss><description>&lt;p&gt;In questo post descriverò una possibile &lt;strong&gt;causa dell'errore 701 ed individuazione della sua origine&lt;/strong&gt;.&lt;/p&gt;  &lt;h3&gt;Problema&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;In maniera sporadica alcune query falliscono con il seguente errore      &lt;br /&gt;&lt;i&gt;Error: 701, Severity: 17, State: 123.        &lt;br /&gt;&lt;/i&gt;&lt;i&gt;There is insufficient system memory to run this query.        &lt;br /&gt;&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;Server a 32 bit:      &lt;br /&gt;Microsoft SQL Server 2005 - 9.00.3200.00 (Intel X86)       &lt;br /&gt;Windows NT 5.2 (Build 3790: Service Pack 2) &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Dati raccolti&lt;/h3&gt;  &lt;p&gt;Per questa particolare occorrenza dell’errore 701 sono stati raccolti ed analizzati solo i dati sotto riportati.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Informazioni relative a &lt;strong&gt;Dbcc Memorystatus&lt;/strong&gt; (&lt;a href="http://support.microsoft.com/kb/271624"&gt;INF: Using DBCC MEMORYSTATUS to Monitor SQL Server Memory Usage&lt;/a&gt;) registrate nell’error log di Sql server al momento della generazione dell’errore 701       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Memory Dump di Sql server&lt;/strong&gt; prodotto in modo automatico al verificarsi dell’errore 701 tramite l’abilitazione dei seguenti &lt;strong&gt;trace flag&lt;/strong&gt;:       &lt;ul&gt;       &lt;li&gt;.8004 per generare un dump al verificarsi dell’errore 701 &lt;/li&gt;        &lt;li&gt;.8026 per eliminare automaticamente il trace flag 8004 una volta che un primo dump è già stato prodotto per l’errore 701. Questo eviterà la successiva produzione di dump nel caso in cui l’errore 701 avvenisse numerose volte &lt;/li&gt;        &lt;li&gt;.2551 per generare un filtered dump          &lt;br /&gt;I trace flag potranno essere abilitati utilizzando dbcc traceon o l’opzione di startup -T come indicato in &lt;a href="http://msdn.microsoft.com/en-us/library/ms188396(SQL.90).aspx"&gt;&lt;b&gt;Trace Flags&lt;/b&gt;&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Informazioni sulla &lt;strong&gt;configurazione del server&lt;/strong&gt; quali output di Sp_configure per Sql server e memoria fisica del server &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Analisi dei Dati&lt;/h3&gt;  &lt;p&gt;Quando si verifica l’errore 701, la prima attività, necessaria a determinarne la causa, è controllare lo &lt;strong&gt;stato della memoria di Sql server&lt;/strong&gt; scritto nell’Error log subito dopo il verificarsi dell’errore.     &lt;br /&gt;Di seguito un estratto dell’Error log e informazioni sullo stato della memoria di Sql server:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;2008-12-21 14:22:33.61 spid54 Buffer Distribution: Stolen=5097 Free=680 Cached=162318        &lt;br /&gt;Database (clean)=831513 Database (dirty)=100         &lt;br /&gt;I/O=0, Latched=4         &lt;br /&gt;2008-12-21 14:22:33.61 spid54 Buffer Counts: Committed=999712 Target=1048576 Hashed=831617         &lt;br /&gt;Internal Reservation=33587 External Reservation=0         &lt;br /&gt;&lt;b&gt;Stolen Potential=-7875          &lt;br /&gt;&lt;/b&gt;Min Free=256 Visible=167936         &lt;br /&gt;Available Paging File=34149490688         &lt;br /&gt;2008-12-21 14:22:33.61 spid54 Procedure Cache: TotalProcs=3 TotalPages=63 InUsePages=15&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Come si può verificare lo &lt;strong&gt;&lt;i&gt;Stolen Potential&lt;/i&gt; è negativo&lt;/strong&gt;. &lt;i&gt;Stolen Potential&lt;/i&gt; indica il numero massimo di pagine che possono essere sottratte alla Buffer Pool (&lt;u&gt;&lt;a href="http://support.microsoft.com/kb/907877/en-us"&gt;&lt;i&gt;How to use the DBCC MEMORYSTATUS command to monitor memory usage on SQL Server 2005&lt;/i&gt;&lt;/a&gt;&lt;/u&gt;)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In queste condizioni di Stolen Potential negativo, &lt;strong&gt;Sql server inizia ad impedire successive richieste di allocazione&lt;/strong&gt; nell'ambito della &lt;i&gt;Stolen Memory&lt;/i&gt;, per cui si possono generare errori 701 o di mancanza di memoria durante l'esecuzione di una query.     &lt;br /&gt;La &lt;i&gt;Stolen Memory&lt;/i&gt; indica buffers di 8Kb utilizzati per diversi tipi di allocazioni di memoria escluso le allocazioni per le pagine dati. Esempi di &lt;i&gt;Stolen Memory&lt;/i&gt; possono essere allocazioni della &lt;strong&gt;procedure cache, metadata cache, memoria dell'optimizer o memoria per esecuzione di query.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Esamindano l'output di dbcc memorystatus in corrispondenza della memoria utilizzata dai vari &lt;i&gt;Memory Clerk&lt;/i&gt;, è stato possibile individuare un &lt;i&gt;Memory Clerk&lt;/i&gt; utilizzante 1.3 Gb per single page allocator (Per una descrizione della &lt;i&gt;Buffer Pool&lt;/i&gt; e &lt;i&gt;Memory Clerk&lt;/i&gt; riferirsi al post di Slava Oks &lt;a href="http://blogs.msdn.com/slavao/archive/2005/02/11/371063.aspx"&gt;&lt;b&gt;SQLOS's memory manager and SQL Server's Buffer Pool&lt;/b&gt;&lt;/a&gt;)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;USERSTORE_SXC (Total)      &lt;br /&gt;VM Reserved = 0 KB       &lt;br /&gt;VM Committed = 0 KB       &lt;br /&gt;AWE Allocated = 0 KB       &lt;br /&gt;SM Reserved = 0 KB       &lt;br /&gt;SM Committed = 0 KB       &lt;br /&gt;SinglePage Allocator = 1309464 KB       &lt;br /&gt;MultiPage Allocator = 0 KB&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Essendo il sistema a 32 bit, la dimensione della &lt;i&gt;Stolen Memory&lt;/i&gt; è &lt;strong&gt;limitata dalla dimensione del Virtual Address space&lt;/strong&gt; ( 2 GB di memoria per processo utente su windows-32 bit non utilizzanti il /3GB &lt;a href="http://msdn.microsoft.com/en-us/library/aa366912(VS.85).aspx"&gt;Virtual Address Space&lt;/a&gt; ), perciò, la quantità di memoria utilizzata dallo &lt;i&gt;User Store USERSTORE_SXC (1,3GB&lt;/i&gt; ), ha determinato una diminuzione della parte di memoria utilizzabile per Stolen Memory e pagine dati, determinando l'errore 701.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Per verificare su &lt;strong&gt;quale esatta allocazione l’errore 701 venisse prodotto&lt;/strong&gt;, abbiamo analizzato il dump ottenuto tramite i trace flag sopra menzionati &lt;/p&gt;  &lt;p&gt;Il dump, contenente le chiamate generanti l’errore 701, mostrava, il tentativo di allocazioni per &lt;i&gt;USERSTORE_SXC&lt;/i&gt; (&lt;b&gt;sqlservr!SOS_UserStore::CreateMemoryObject &lt;/b&gt;&lt;b&gt;à&lt;/b&gt; &lt;b&gt;sqlservr!SQLSinglePageAllocator::AllocatePages &lt;/b&gt;), scaturito da chiamate RPC (&lt;b&gt;sqlservr!processRPC&lt;/b&gt;)e fallito per condizione di mancanza di memoria (&lt;b&gt;sqlservr!BPool::RecordFailure&lt;/b&gt;).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;66f7f5ac 0158fefb sqlservr!BPool::RecordFailure+0x168        &lt;br /&gt;66f7f63c 0101890a sqlservr!BPool::Steal+0x15a&lt;/b&gt;       &lt;br /&gt;66f7f65c 01018a4f sqlservr!SQLSinglePageAllocator::AllocatePages+0x24       &lt;br /&gt;66f7f8b0 01018b4b sqlservr!MemoryNode::AllocatePagesInternal+0xd3       &lt;br /&gt;66f7f8d4 01042534 sqlservr!MemoryClerkInternal::AllocatePages+0x50       &lt;br /&gt;66f7f93c 01301643 sqlservr!MemoryObjectFactory::CreateMemObject+0x319       &lt;br /&gt;66f7f974 013015b4 &lt;b&gt;sqlservr!SOS_UserStore::CreateMemoryObject&lt;/b&gt;+0x136       &lt;br /&gt;66f7f998 01058e69 sqlservr!CCacheableSessionExecState::CreateMemoryObjectPxp+0x82       &lt;br /&gt;66f7f9c4 01058947 sqlservr!srv_rpcinfo::PxpAllocate+0x39       &lt;br /&gt;66f7fa00 01058784 &lt;b&gt;sqlservr!processRPC&lt;/b&gt;&amp;lt;3&amp;gt;+0x31e       &lt;br /&gt;66f7fa1c 0103d94c sqlservr!CRPCExecEnv::GetCommandInput+0x70       &lt;br /&gt;66f7fb94 0103d690 sqlservr!process_request+0x267       &lt;br /&gt;66f7fd4c 01008d68 sqlservr!process_commands+0x2e0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Da notare che una volta prodotta una condizione di mancanza di memoria , l’errore 701 potrebbe prodursi anche su allocazioni diverse da quella che ha causato il problema, in questo caso il dump ha semplicemente rinforzato il concetto di un errore 701 avvenuto durante il tentativo di allocazioni per &lt;i&gt;USERSTORE_SXC&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;Soluzione&lt;/h3&gt;  &lt;p&gt;Il Memory Clerk&lt;i&gt; USERSTORE_SXC&lt;/i&gt; ha, tra i suoi utilizzi, la gestione della memoria per immagazzinare le richieste RPC e relativi parametri.     &lt;br /&gt;Numerose chiamate RPC possono essere inviate al server in un'unica richiesta.     &lt;br /&gt;Se il client invia al server numerosi batch RCP di grandi dimensioni in un'unica richiesta, Sql server 2005 accumula tale richiesta in memoria prima di iniziare l’esecuzione.&lt;/p&gt;  &lt;p&gt;La memoria utilizzata per immagazzinare questa richiesta, può diventare molto grande a seconda dei tipo di dati utilizzati per i parametri RPC e dalla dimensione dei batch (numero di RPC per richiesta).&lt;/p&gt;  &lt;p&gt;La soluzione a questo problema consiste nel&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ridurre la dimensione dei batch (numero di RPC per richiesta) oppure &lt;/li&gt;    &lt;li&gt;riconsiderare il tipo di dati dei parametri RPC , ad esempio evitando di utilizzare sql_variant. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Una soluzione temporanea potrebbe essere quella di liberare ad intervalli regolari la memoria associata a&lt;i&gt; USERSTORE_SXC&lt;/i&gt; tramite esecuzione di &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;DBCC FREESYSTEMCACHE ('sxcCacheStore') WITH MARK_IN_USE_FOR_REMOVAL&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/raffaella-canobbio.aspx"&gt;Raffaella Canobbio&lt;/a&gt;     &lt;br /&gt;Senior Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3266369" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Raffaella+Canobbio/default.aspx">Raffaella Canobbio</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL Server - Possibili cause del "General Network Error"</title><link>http://blogs.technet.com/itasupport/archive/2009/06/29/sql-server-possibili-cause-del-general-network-error.aspx</link><pubDate>Mon, 29 Jun 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3256138</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3256138.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3256138</wfw:commentRss><description>&lt;P&gt;In questo post vorrei parlare di alcuni scenari tipici in cui un’applicazione riceve l’errore “General Network Error”. Ciascuna delle cause rappresenta uno scenario piuttosto complesso, vorrei riassumere i punti chiave per ogni scenario: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Come? &lt;/LI&gt;
&lt;LI&gt;Quando? &lt;/LI&gt;
&lt;LI&gt;Come risolvere? &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;e fornirvi i link degli articoli dove potete trovare maggiori dettagli o spiegazioni.&lt;/P&gt;
&lt;P&gt;Le cause descritte sotto sono solo una parte delle cause che potrebbero provocare "General Network Error", ho cercato di specificare le più comuni. &lt;/P&gt;
&lt;H3&gt;Sintomi&lt;/H3&gt;
&lt;P&gt;Consideriamo uno scenario come il seguente:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Un’applicazione si connette ad una database di SQL remota. L'applicazione potrebbe essere di diversi tipi: desktop, web. &lt;/LI&gt;
&lt;LI&gt;Quando l'applicazione si connette a SQL Server, randomicamente si verifica uno dei seguenti messaggi d’errore: &lt;BR&gt;&lt;BR&gt;System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) 
&lt;P&gt;ERROR [08S01] [Microsoft][SQL Native Client]Communication link failure&lt;/P&gt;
&lt;P&gt;[Microsoft][ODBC SQL Server Driver][DBNETLIB] General Network error. Check your network documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Primi controlli&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Prima bisogna capire se l’errore è collegato all’applicazione, oppure è un problema generale di comunicazione tra i server. Per determinare questo si può provare ad aprire una connessione dal server dove gira l'applicazione allo stesso database di SQL Server nel momento in qui si verifica il problema usando un altro client, per esempio un file udl (&lt;A href="http://support.microsoft.com/kb/244659" mce_href="http://support.microsoft.com/kb/244659"&gt;http://support.microsoft.com/kb/244659&lt;/A&gt;). Per avere una buona prova bisogna fare un test della connessione immediatamente quando l'errore si presenta in applicazione. A volte è molte difficile prevedere quando succede l'errore, ma in alcuni casi potrebbe essere fattibile. Se, per esempio, tutte le connessioni dell'applicazione falliscono con "General Network Error" e allo stesso tempo tutti i test da un file udl si completano con successo bisogna cominciare le verifiche dalla review dell'applicazione. &lt;/LI&gt;
&lt;LI&gt;Hardware di rete 
&lt;UL&gt;
&lt;LI&gt;Se ci sono firewall, verificate se le impostazioni di timeout sono configurate correttamente. Il problema della connettività potrebbe succedere quando scatta un Timeout di firewall prima che il client e SQL hanno completato l’attività sulla connessione. &lt;/LI&gt;
&lt;LI&gt;Se usate teaming adapter fate una prova disattivandolo e verificate se il problema si presenta lo stesso. (Teaming significa che tutte le schede di rete sono tenute insieme e appaiono come un IP / indirizzo fisico) &lt;/LI&gt;
&lt;LI&gt;Sarebbe anche utile fare le seguente prove e verificare se il problema si presenta lo stesso o no: 
&lt;UL&gt;
&lt;LI&gt;Disattivare teaming adapters della rete. &lt;/LI&gt;
&lt;LI&gt;Escludere routers o firewalls, se è possibile, semplificate il percorso tra il client e il server. &lt;/LI&gt;
&lt;LI&gt;Spostare il server e il client sulla stessa subnet. &lt;/LI&gt;
&lt;LI&gt;Verificare se i drivers della scheda di rete sono aggiornati. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Possibili cause&lt;/H3&gt;
&lt;H4&gt;Scalable Networking Pack (SNP) è abilitato e incompatibile con l’hardware di rete&lt;/H4&gt;
&lt;P&gt;Scalable Networking Pack include il supporto per le seguente funzionalità:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;TCP Chimney Offload, &lt;/LI&gt;
&lt;LI&gt;Receive-Side Scaling &lt;/LI&gt;
&lt;LI&gt;NetDMA &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Scalable Networking Pack(SNP) è incluso nel Service Pack 2 di Windows Server 2003 e come un pacchetto stand-alone.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;SQL Server è installato sul&amp;nbsp; Windows Server 2003 dove SNP è abilitato &lt;/LI&gt;
&lt;LI&gt;Applicazione si connette a questo SQL Server remoto tramite protocollo TCP/IP &lt;/LI&gt;
&lt;LI&gt;In modo randomico nell’applicazione si verifica un problema descritto nella sezione Sintomi sopra riportata &lt;/LI&gt;
&lt;LI&gt;Il problema si verifica solo quando la connessione è aperta tramite il protocollo TCP/IP &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come confermare il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Se l’applicazione esplicitamente si connette a SQL Server usando il protocollo Named Pipes il problema non si verifica. Per esempio, nella stringa della connessione il nome del server viene specificato come &lt;I&gt;np:ServerName&lt;/I&gt; forzando il protocollo Named Pipes. &lt;/LI&gt;
&lt;LI&gt;Potete prendere le trace di rete simultanee dal server dell'applicazione e dal server di database. Dovete vedere un pacchetto con RESET nell'entrambe trace. Ma nella trace di database si vede che RESET è inviato dal client invece nel trace di client si vede che RESET è inviato dal server di database. Lo scenario è molto simile allo scenario descritto nel punto 2 “Firewall or router interrompe le connessioni”, dove potete vedere anche un esempio dei pacchetti &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Disabilitate manualmente le funzionalità di SNP come è descritto nell’articolo &lt;A href="http://support.microsoft.com/kb/948496" mce_href="http://support.microsoft.com/kb/948496"&gt;http://support.microsoft.com/kb/948496&lt;/A&gt; (Metodo 3). Se dopo la disattivazione delle funzionalità di SNP il problema si verifica ancora, la causa del problema è diverso; cancellate le modifiche, fatte per disabilitare SNP. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Firewall o Router interrompe le connessioni&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;Intermittente &lt;/LI&gt;
&lt;LI&gt;Può essere causato da malfunzionamenti hardware o impostazioni che possono interrompere i pacchetti. &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come confermare il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Create una trace di rete simultanea sul computer client e sul server del database quando si verifica il problema ( si può utilizzare &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&amp;amp;DisplayLang=en"&gt;Microsoft Network Monitor 3.2&lt;/A&gt; per catturare le trace) contrassegnando esattamente il momento in cui si verifica l’errore. &lt;/LI&gt;
&lt;LI&gt;Poi analizzate le conversazioni nelle trace del client e del server nel momento dell’errore. Le conversazioni dovrebbero essere simili alle seguenti (SQL Server ascolta sulla porta TCP 1433, l'applicazione – sulla porta 1556): &lt;/LI&gt;&lt;/UL&gt;
&lt;OL&gt;
&lt;OL&gt;
&lt;LI&gt;Il client invia una query: &lt;BR&gt;&lt;FONT color=#000080&gt;1032&amp;nbsp; 08:36:10.322&amp;nbsp; CISCO 07AC01&amp;nbsp; TCP Control Bits: .AP..., len: 220, seq:2924440638-2924440858, ack:3256828393, src: 1556 dst: 1433&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select * from dbo.test_table &lt;BR&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;SQL server risponde con data: &lt;BR&gt;&lt;FONT color=#000080&gt;1079 08:36:10.489 CISCO 07AC01 TCP Control Bits: .AP..., len: 136, seq:3256828393-3256828529, ack:2924440858, src: 1433 dst: 1556 &lt;BR&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Il client conferma: &lt;BR&gt;&lt;FONT color=#000080&gt;1034 08:36:10.540 CISCO 07AC01 TCP Control Bits: .A...., len: 0, seq:2924440858-2924440858, ack:3256828529, src: 1556 dst: 1433 &lt;BR&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Il server di database conferma. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Alcuni secondi dopo, un AckReset si vede nella trace del server di database, ma questo AckReset non è mai uscito dal client: &lt;BR&gt;&lt;FONT color=#000080&gt;1081 08:36:17.317TCP Control Bits: .A.R.., len: 0, seq:2924440858-2924440858, ack:3256828529, src: 1556 dst: 1433 &lt;BR&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Qui è dove le cose vanno storte. Dal lato client non vediamo nessuna indicazione che questo pacchetto è stato inviato dal client. In realtà, il client sta preparando ad inviare a distanza di circa 10 – 15 secondi di nuovo la stessa query. Il collegamento è già stato interrotto, per questo non riesce ad inviarlo e riceve l’errore della connettività. Per qualche motivo il Reset è stato inviato da&amp;nbsp; un hardware tra il client e il server di database. &lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Procedete con la verifica dello stato di rete con la revisione delle impostazioni hardware di rete tra il client e il server di database. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Applicazione non usa connection pooling e apre le connessioni tramite protocollo TCP/IP&lt;/H4&gt;
&lt;P&gt;Le tre cause seguenti sono molto simili e per questo suggerisco di rivederle insieme.&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;1 - Le porte anonime si esauriscono sul client&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;Le porte anonime sono utilizzate dal lato client al livello di protocollo dell’applicazione. Queste porte sono assegnate dinamicamente. In Windows 2003 le porte sono assegnate nell’intervallo 1024 – 5000.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;L'applicazione apre la connessione al database di SQL Server utilizzando il provider che permette di disattivare il connection pooling, per esempio, SQL Server OLEDB provider or System.Data.SqlClient provider. &lt;/LI&gt;
&lt;LI&gt;Se l'applicazione si connette al database di SQL Server utilizzando il protocollo TCP / IP, connection pooling è disattivato e l'applicazione apre e chiude le connessioni molto spesso, lo stress sulla sottostante libreria di rete SQL Server può essere aumentato e come risultato la connessione potrebbe essere interrotta con l’errore "General Network Error". &lt;/LI&gt;
&lt;LI&gt;Ogni volta quando si apre e si chiude un socket tramite una libreria di rete di SQL sul lato client, il socket entra in stato TIME_WAIT per quattro minuti. Se si aprono e si chiudono rapidamente i 4000 sockets in meno di quattro minuti, si raggiunge la massima impostazione di default per le porte anonime, e i nuovi tentativi di aprire una nuova connessione falliranno fino a quando il set esistente delle socket in TIME_WAIT non va in timeout. &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come confermare il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Appena si verifica l’errore “General network error” dovete aprire la riga del comando ed eseguire il commando sotto riportato. &lt;BR&gt;netstat -ano &lt;/LI&gt;
&lt;LI&gt;Analizzate il risultato. Dovete vedere circa 4000 connessioni nello stato TIME_WAIT verso l’indirizzo IP del computer, dove gira SQL Server. &lt;BR&gt;
&lt;DIV align=center&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=10 align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P align=center&gt;Protocol&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P align=center&gt;Local Address&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P align=center&gt;Foreign Address&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P align=center&gt;State&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P align=center&gt;PID&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3098&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;1520&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3100&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;2256&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3110&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;1140&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3111&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;1096&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3115&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;2292&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TCP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;web:3118&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;sql:ms-sql-s&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;TIME_WAIT&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top&gt;
&lt;P&gt;2456&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Potete confrontare il risultato dello strumento TCPView (&lt;A href="http://technet.microsoft.com/it-it/sysinternals/bb897437(en-us).aspx" mce_href="http://technet.microsoft.com/it-it/sysinternals/bb897437(en-us).aspx"&gt;http://technet.microsoft.com/it-it/sysinternals/bb897437(en-us).aspx&lt;/A&gt;) al risultato ottenuto dalla query sulla tabella sysprocesses in SQL Server. 
&lt;UL&gt;
&lt;LI&gt;Nel momento, in cui si presenta il problema, eseguite il comando in SQL Server. &lt;BR&gt;SELECT * FROM sysprocesses &lt;/LI&gt;
&lt;LI&gt;Lanciate lo strumento TCPView e confrontate il risultato con il risultato ottenuto nel passo precedente. &lt;/LI&gt;
&lt;LI&gt;Per esempio, se vedete che ci sono 1000 porte aperte per connettersi al SQL server, ma SQL Server dimostra solo 100 connessioni in sysprocesses, questo potrebbe indicare che molte porte TCP sono nello stato inattivo (per impostazione predefinita si aspetta 4 minuti prima di essere chiuso) e questo può impedire ai nuovi clienti di ottenere una porta dal sistema operativo. &lt;BR&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Se pooling è abilitato, non dovete aggiustare l’impostazione dei parametri MaxUserPort and TcpTimedWaitDelay. &lt;/LI&gt;
&lt;LI&gt;Altrimenti regolate le impostazioni di MaxUserPort e TcpTimedWaitDelay sul computer client dove gira l'applicazione. Per esempio, su un Internet Information Services (IIS) in cui un server web si connette a un computer remoto di SQL Server database utilizzando il protocollo TCP / IP con pooling disabilitato. &lt;BR&gt;
&lt;UL&gt;
&lt;LI&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters: &lt;BR&gt;Value Name: MaxUserPort &lt;BR&gt;Data Type: REG_DWORD &lt;BR&gt;Valid Range: 5000 – 65534(decimal) &lt;BR&gt;Default: 0x1388 (5000 decimal) &lt;/LI&gt;
&lt;LI&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters: &lt;BR&gt;Value Name: TcpTimedWaitDelay &lt;BR&gt;Data Type: REG_DWORD &lt;BR&gt;Valid Range: 30 – 300(decimal) &lt;BR&gt;Default: 0xF0 (240 decimal) &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;I&gt;Ulteriori informazioni e articoli:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/328476" mce_href="http://support.microsoft.com/kb/328476"&gt;Description of TCP/IP settings that you may have to adjust when SQL Server connection pooling is disabled:&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms819739.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms819739.aspx"&gt;TCP TIME-WAIT Delay&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc758002.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc758002.aspx"&gt;MaxUserPort&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc757512.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc757512.aspx"&gt;TcpTimedWaitDelay&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx" mce_href="http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx"&gt;SQL Server Connection Pooling (ADO.NET)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/319502/EN-US/" mce_href="http://support.microsoft.com/kb/319502/EN-US/"&gt;PRB: "WSAEADDRESSINUSE" Error Message When You Try to Connect Through an Anonymous Port After You Increase the IMAP Connection Limit&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H5&gt;&lt;B&gt;2 – L’Applicazione apre connessioni multiple non in pool&lt;/B&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;L’applicazione non usa pooling. Il problema è molto simile al problema descritto nel punto 4 “Esaurimento delle porte anonime sul client”. &lt;/LI&gt;
&lt;LI&gt;Potete determinare se questa è la causa del problema usando gli approcci descritti nel punto 4. &lt;/LI&gt;
&lt;LI&gt;La differenza è che il codice dell’applicazione è scritto in maniera tale che può produrre gli scenari quando si creano le connessioni aggiuntive. &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Bisogna revisionare il codice dell’applicazione e risolvere il problema cambiando l’implementazione in modo tale che non si generano le connessioni aggiuntive non in pool &lt;/LI&gt;
&lt;LI&gt;Usate il pooling e ricuperate il risultato della query iniziale prima di eseguire una seconda query. &lt;/LI&gt;
&lt;LI&gt;Una connessione aggiuntiva verrà generata quando: 
&lt;UL&gt;
&lt;LI&gt;Viene utilizzata una connessione che è in attesa di un risultato da un cursore ‘firehose’ &lt;/LI&gt;
&lt;LI&gt;Viene utilizzata una connessione che ha una operazione asincrona in corso. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;I&gt;Ulteriori informazioni e articoli:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/191268" mce_href="http://support.microsoft.com/kb/191268"&gt;SQLOLEDB May Spawn Additional Connection For Action Query&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/dataaccess/archive/2005/08/02/446894.aspx" mce_href="http://blogs.msdn.com/dataaccess/archive/2005/08/02/446894.aspx"&gt;Using MARS with SQL Native Client&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms131686(SQL.90).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms131686(SQL.90).aspx"&gt;Using Multiple Active Result Sets (MARS)&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;H5&gt;&lt;B&gt;3 - Si supera l’impostazione predefinita di WINSOCKLISTENBACKLOG nel computer con SQL Server&lt;/B&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;L’impostazione backlog è la massima lunghezza della coda di connessioni in attesa per listener. I sintomi sono molto simili allo scenario con le porte anonime e il codice dove si aprono multiple connessioni non in pool. &lt;/LI&gt;
&lt;LI&gt;Bisogna tener conto che solo in rarissimi casi, potrebbe essere necessario modificare questa impostazione, anche se pooling è attivato sul computer client. Per esempio, se molti computer client comunicano con un computer singolo dove gira SQL server, un gran numero di tentativi di connessioni simultanee in entrata possono verificarsi in qualsiasi momento anche se pooling è abilitato. &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come confermare il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Per determinare se si presenta questo problema potete catturare una trace di rete sul computer del client oppure sul computer dove gira SQL Server e verificare le richieste di connessione che sono immediatamente respinte con ACK+RESET &lt;/LI&gt;
&lt;LI&gt;Esaminando i pacchetti TCP/IP nella trace di rete è possibile vedere un pacchetto come il seguente quando il problema si è verificato. &lt;/LI&gt;
&lt;LI&gt;Nell’esempio sotto riportato SQL Server ascolta sulla porta 1433. 
&lt;UL&gt;
&lt;LI&gt;Frame: &lt;BR&gt;+ Ethernet: Etype = Internet IP (IPv4) &lt;BR&gt;+ Ipv4: Next Protocol = TCP, Packet ID = 17897, Total IP Length = 40 &lt;BR&gt;+ Tcp: Flags=....A..R., SrcPort=1433, DstPort=4046, Len=0, Seq=0-0, Ack=2305526653, Win=0 &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; 
&lt;UL&gt;
&lt;LI&gt;Revisionate il codice e usate il pool delle connessioni. &lt;/LI&gt;
&lt;LI&gt;Se questo non risolve il problema e avete verificato che le connessioni vanno in pool, in questo caso potete provare ad aumentare la dimensione della coda backlog. In questo caso sarà aumentato il numero delle richieste delle connessioni socket in attesa che il livello socket di TCP/IP mette in coda. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;I&gt;Ulteriori informazioni e articoli:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/328476" mce_href="http://support.microsoft.com/kb/328476"&gt;Description of TCP/IP settings that you may have to adjust when SQL Server connection pooling is disabled&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Uso improprio delle connessioni SqlConnection in codice gestito.&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; 
&lt;UL&gt;
&lt;LI&gt;Quando gli oggetti SqlConnection non sono gestiti correttamente nel codice dell’applicazione, questo potrebbe portare alla situazione in cui i 2 thread possono tentare di utilizzare contemporaneamente lo stesso oggetto SqlConnection, In questo caso l’invio dei TDS invalidi a SQL Server fa scattare l’errore 17805 provocando SQL Server di chiudere la connessione bruscamente. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt; &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Bisogna assicurarsi che le connessioni SqlClient siano chiuse correttamente. Se ci sono i DataReaders restituiti, dovrebbe essere usata la modalità&amp;nbsp; CommandBehavior.CloseConnection alla creazione di DataReader&lt;/LI&gt;
&lt;LI&gt;Non bisogna mai chiamare Close() or Dispose() dell’oggetto di SqlClient nel metodo Finalize di una classe.&lt;/LI&gt;
&lt;LI&gt;Non usate un oggetto SqlConnection statico e sempre utilizzate gli oggetti di SqlConnection con scopo locale al metodo dove vengono usati. In questo modo potete garantire che non ci sono i 2 thread che utilizzano una connessione di SqlConnetion allo stesso tempo.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/827366" mce_href="http://support.microsoft.com/kb/827366"&gt;"Invalid Buffer Received from Client” error message in SQL Server log when you use SQL Server .NET provider classes&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Questo articolo parla di una specifica causa dell’errore 17805. In generale, l'errore può verificarsi in qualsiasi scenario che potrebbe consentire il simultaneo accesso multi - threaded ad un oggetto SqlConnection. In quasi tutti i casi in cui si verifica l’errore 17805 in modo casuale, si consiglia un cambiamento nel codice e l’utilizzo degli oggetti SqlConnection che sono locali a un metodo, in modo tale da garantire che gli oggetti SqlConnection non possono essere accessibile da più di un thread.&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;I&gt;Ulteriori informazioni e articoli:&lt;/I&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx" mce_href="http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx"&gt;Implementing Finalize and Dispose to Clean Up Unmanaged Resources&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.close.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.close.aspx"&gt;SqlConnection..::.Close Method&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms998569.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms998569.aspx"&gt;Improving ADO.NET Performance&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms971481.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms971481.aspx"&gt;Best Practices for Using ADO.NET&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;H4&gt;Applicazione client usa SqlClient con crittografia SSL (.NET Framework 1.0 / 1.1)&lt;/H4&gt;
&lt;P&gt;Descrizione dettagliata di questo problema, si può trovare nell’articolo sotto riportato:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;KB 821289&lt;/STRONG&gt; &lt;BR&gt;FIX: "General Network Error" when you use SqlClient with SSL encryption &lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/821289" mce_href="http://support.microsoft.com/kb/821289"&gt;http://support.microsoft.com/kb/821289&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Applicazione è basata su .Net Framework 1.0 o .Net Framework 1.1&lt;/LI&gt;
&lt;LI&gt;Secure Socket Layer (SSL) si usa con Microsoft SQL Server 2000. Se SQL Server trova sul computer locale un certificato valido che è stato rilasciato sul FQDN ( Fully- Qualified-Domain-Name) e l’applicazione usa SqlClient, si può verificare&amp;nbsp; l’errore “General Network Error”.&lt;/LI&gt;
&lt;LI&gt;Quando il problema si verifica viene visualizzato il seguente call stack:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;exception in TraceLogProcess:General network error.&amp;nbsp; Check your network documentation.:&amp;nbsp;&amp;nbsp; &lt;BR&gt;at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, TdsParserState state)&amp;nbsp; at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, TdsParserState state) &lt;BR&gt;at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() &lt;BR&gt;at System.Data.SqlClient.TdsParser.ReadNetlib(Int32 bytesExpected) &lt;BR&gt;at System.Data.SqlClient.TdsParser.ReadBuffer() &lt;BR&gt;at System.Data.SqlClient.TdsParser.ReadByteArray(Byte[] buff, Int32 offset, Int32 len) &lt;BR&gt;at System.Data.SqlClient.TdsParser.ReadSqlValue(_SqlMetaData md, Int32 length) &lt;BR&gt;at System.Data.SqlClient.TdsParser.ProcessRow(_SqlMetaData[] columns, Object[] buffer, Int32[] map, Boolean useSQLTypes) &lt;BR&gt;at System.Data.SqlClient.SqlDataReader.PrepareSQLRecord(Int32 i) &lt;BR&gt;at System.Data.SqlClient.SqlDataReader.GetSqlInt32(Int32 i) &lt;BR&gt;at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Applicare l’hotfix dall’articolo&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/821289" mce_href="http://support.microsoft.com/kb/821289"&gt;FIX: "General Network Error" when you use SqlClient with SSL encryption&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/824721/" mce_href="http://support.microsoft.com/kb/824721/"&gt;List of updates in Windows Server 2003 Service Pack 1&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/836799/" mce_href="http://support.microsoft.com/kb/836799/"&gt;FIX: Hotfixes are available for MDAC 2.7 Service Pack 1&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;H4&gt;SqlCommand.CommandTimeout è impostato a 0 (.NET Framework 1.0/ 1.1)&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;I&gt;Come verificare il problema:&lt;/I&gt; &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Se la proprietà di SqlCommand.CommandTimeout è impostata a 0 (cioè infinito) e una risposta da parte di SQL è divisa in più di un pacchetto di rete, la connessione può essere chiusa incorrettamente e come conseguenza si verifica l’errore “General Network Error” &lt;/LI&gt;
&lt;LI&gt;Questo problema può apparire come un problema intermittente, a seconda di come spesso l’applicazione riceve le risposte che sono più grandi di un pacchetto.&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;EM&gt;Come confermare il problema:&lt;/EM&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Questo problema può essere individuato in una trace di rete. Se risulta presente una query, seguita da un completo pacchetto di dati trasmessi (per default la dimensione di un pacchetto SqlClient è di 8K, anche se nella trace di rete può apparire come pacchetti multipli con la dimensione totale di 8K ), quindi dopo il primo pacchetto, la connessione sembra essere chiusa correttamente con il pacchetto ACK+FIN. Dopodiché SQL Server continua l’invio dei dati che risultano in un reset TCP/IP con l’errore.&lt;/LI&gt;
&lt;LI&gt;Comunque non dovrebbe essere necessario di catturare una trace di rete se avete già individuato che CommandTimeout è impostato a zero e potenzialmente potrebbe essere ricevuto più di un pacchetto di dati per volta.&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;EM&gt;Come risolvere il problema:&lt;/EM&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;P&lt;/EM&gt;otete evitare questo problema impostando un valore alto per CommandTimeout, per esempio, 7200 oppure installando una hotfix dall’articolo sotto riportato.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;KB 823679 &lt;BR&gt;&lt;/STRONG&gt;Fix: Multiple Fixes for SQL Server .NET Data Provider &lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/823679" mce_href="http://support.microsoft.com/kb/823679"&gt;http://support.microsoft.com/kb/823679&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/itasupport/pages/olga-guzheva.aspx" mce_href="http://blogs.technet.com/itasupport/pages/olga-guzheva.aspx"&gt;Olga Guzheva&lt;/A&gt; &lt;BR&gt;Senior Support Engineer &lt;BR&gt;Microsoft Enterprise SQL Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3256138" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Olga+Guzheva/default.aspx">Olga Guzheva</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Supporto Tecnico agli Sviluppatori</title><link>http://blogs.technet.com/itasupport/archive/2009/06/22/supporto-tecnico-agli-sviluppatori.aspx</link><pubDate>Mon, 22 Jun 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3247474</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3247474.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3247474</wfw:commentRss><description>&lt;H3&gt;Incident di Supporto Tecnico&lt;/H3&gt;
&lt;P&gt;Sviluppatori italiani, unitevi! &lt;IMG alt=Open-mouthed src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/teeth_smile.gif" mce_src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/teeth_smile.gif"&gt; Avete un problema o una domanda su come usare i prodotti di sviluppo Microsoft e i newsgroup o i forum non sono stati d'aiuto? Allora, non perdete altro tempo lasciando che il problema diventi troppo urgente, ed aprite una richiesta di supporto! Parlerete con lo specialista della tecnologia di vostro interesse e potrete constatare se davvero il Supporto Tecnico Microsoft sia in grado di fornire quel valore aggiunto che vi serve.&amp;nbsp;Tra l'altro, particolare non trascurabile... ne avete probabilmente già &lt;U&gt;diritto gratuitamente&lt;/U&gt;! Forse non tutti sanno che acquistando Visual Studio insieme alla sottoscrizione MSDN, avete già acquistato il diritto di aprire un certo numero di "incident" senza costi aggiuntivi:&lt;/P&gt;
&lt;DIV align=center&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=786 align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=111&gt;&lt;STRONG&gt;MSDN Subscription Level&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=126&gt;Visual Studio 2008 Professional with MSDN Professional&lt;/TD&gt;
&lt;TD vAlign=top width=136&gt;Visual Studio 2008 Professional with MSDN Premium&lt;/TD&gt;
&lt;TD vAlign=top width=138&gt;Visual Studio Team System 2008 Edition with MSDN Premium&lt;/TD&gt;
&lt;TD vAlign=top width=135&gt;Visual Studio Team System 2008 Team Suite with MSDN Premium&lt;/TD&gt;
&lt;TD vAlign=top width=138&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=111&gt;&lt;STRONG&gt;Incident&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=126&gt;2&lt;/TD&gt;
&lt;TD vAlign=top width=137&gt;4&lt;/TD&gt;
&lt;TD vAlign=top width=140&gt;4&lt;/TD&gt;
&lt;TD vAlign=top width=138&gt;4&lt;/TD&gt;
&lt;TD vAlign=top width=144&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/it-it/vs2008/bb964330.aspx" target=_blank mce_href="http://msdn.microsoft.com/it-it/vs2008/bb964330.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Come aprire una richiesta&lt;/H3&gt;
&lt;P&gt;Se avete acquistato il singolo prodotto, è possibile aprire la richiesta:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;telefonicamente, allo &lt;STRONG&gt;02/70.398.398&lt;/STRONG&gt; (la prima volta sarà necessario attivare il prodotto chiamando il numero verde 800 531042) 
&lt;OL&gt;
&lt;LI&gt;opzione 1 "Privato" &lt;/LI&gt;
&lt;LI&gt;sotto-opzione 2 "Supporto Tecnico": qui parlerete con un tecnico di primo livello che raccoglierà alcune informazioni, dopo aver verificato la possibilità di supporto gratuito &lt;/LI&gt;
&lt;LI&gt;a questo punto la richiesta sarà aperta e a seconda dell'urgenza l'ingegnere di Supporto Tecnico vi contatterà al telefono o via mail &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;via web, come indicato di seguito (la prima volta sarà necessario attivare il prodotto): 
&lt;OL&gt;
&lt;LI&gt;Dalla &lt;A href="http://support.microsoft.com/?LN=it" target=_blank mce_href="http://support.microsoft.com/?LN=it"&gt;Home page del Supporto Tecnico in italiano&lt;/A&gt;, nella categoria "Supporto Assistito" cliccate su "&lt;A href="http://support.microsoft.com/select/?target=assistance" mce_href="http://support.microsoft.com/select/?target=assistance"&gt;Seleziona il tuo prodotto Microsoft per ricevere assistenza tecnica via web o telefono&lt;/A&gt;" &lt;/LI&gt;
&lt;LI&gt;Selezionate il tuo prodotto nella categoria "Strumenti per sviluppatori", eventualmente dopo averli visualizzati tutti &lt;/LI&gt;
&lt;LI&gt;Selezionate l'edizione del prodotto che avete acquistato. Ad esempio, per Visual Studio 2008 Professional Italiano, arriverete &lt;A href="http://support.microsoft.com/oas/default.aspx?ln=it&amp;amp;c1=501&amp;amp;prid=12057&amp;amp;gprid=528995" target=_blank mce_href="http://support.microsoft.com/oas/default.aspx?ln=it&amp;amp;c1=501&amp;amp;prid=12057&amp;amp;gprid=528995"&gt;a questa pagina&lt;/A&gt;: cliccate sul pulsante "Invia Richiesta Online" &lt;/LI&gt;
&lt;LI&gt;Leggete attentamente e accettate le condizioni &lt;/LI&gt;
&lt;LI&gt;A questo punto la procedura chiede se il problema si presenta sul PC che si sta utilizzando, poichè in questo modo vengono raccolte informazioni sull'attuale stato del computer attraverso il controllo ActiveX 'Microsoft Support Diagnostics Platform' &lt;/LI&gt;
&lt;LI&gt;Poi, per determinare se è disponibile il servizio di supporto GRATUITO, digitate il numero di serie del prodotto: in questo modo sfrutterete i cosiddetti "incident inclusi" &lt;/LI&gt;
&lt;LI&gt;infine, descrivete il problema e specificatene l'urgenza: la richiesta sarà aperta e a seconda dell'urgenza l'ingegnere di Supporto Tecnico vi contatterà al telefono o via mail &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;N.B. E' possibile attivare il prodotto anche dal menu Help\About - "Register Product" di Visual Studio: è necessario avere un account Windows Live ID (che corrisponde ad un indirizzo MSN Hotmail, oppure MSN Messenger, o Passport account).&lt;/P&gt;
&lt;P&gt;Per chi abbia sottoscritto un abbonamento MSDN, le modalità sono analoghe, dopo aver eseguito la registrazione del proprio account: come indicato &lt;A href="http://msdn.microsoft.com/it-it/subscriptions/aa948874.aspx" target=_blank mce_href="http://msdn.microsoft.com/it-it/subscriptions/aa948874.aspx"&gt;qui&lt;/A&gt;, è necessario &lt;A href="http://msdn.microsoft.com/it-it/subscriptions/aa336858.aspx" mce_href="http://msdn.microsoft.com/it-it/subscriptions/aa336858.aspx"&gt;effettuare l'accesso&lt;/A&gt; e fare clic sul collegamento &lt;B&gt;Interventi di supporto&lt;/B&gt; per ulteriori informazioni.&lt;/P&gt;
&lt;H3&gt;Cosa aspettarsi&lt;/H3&gt;
&lt;P&gt;Bene, ed una volta aperta la chiamata cosa succede? Nel giro di un paio ore un tecnico esperto della tecnologia in questione prenderà in carico la richiesta di supporto e vi contatterà per parlarne più approfonditamente; questa fase è importante per farsi un’idea del problema vero e proprio, di quali componenti coinvolge, dell’ambiente nel quale si verifica (macchine coinvolte, tipo di rete ecc…) ed indirizzare i passi successivi. Potrebbe essere necessario raccogliere log del sistema operativo, o trace applicative, magari dump di memoria da analizzare, o altre volte potrebbe essere necessario creare una piccola applicazione di test per riprodurre il problema nel nostro laboratorio dove lo possiamo analizzare al meglio… il tutto ovviamente con l’obiettivo di trovare la soluzione migliore per le vostre esigenze, possibilmente condita con informazioni tecniche che vi potranno essere utili anche in futuro. &lt;/P&gt;
&lt;P&gt;Insomma, cosa aspettate? &lt;IMG alt=Smile src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/regular_smile.gif" mce_src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/regular_smile.gif"&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;EM&gt;Il Team di Supporto Tecnico agli Sviluppatori&lt;/EM&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/PagaePretendi_D8A5/CSS_DevSQL.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/PagaePretendi_D8A5/CSS_DevSQL.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="CSS_Dev SQL" border=0 alt="CSS_Dev SQL" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/PagaePretendi_D8A5/CSS_DevSQL_thumb.jpg" width=660 height=272 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/PagaePretendi_D8A5/CSS_DevSQL_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3247474" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Manager+Team/default.aspx">Manager Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Marco+Crippa/default.aspx">Marco Crippa</category></item><item><title>SQL Server - Query distribuite in esecuzione senza mai terminare</title><link>http://blogs.technet.com/itasupport/archive/2009/05/25/sql-server-query-distribuite-in-esecuzione-senza-mai-terminare.aspx</link><pubDate>Mon, 25 May 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3240336</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3240336.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3240336</wfw:commentRss><description>&lt;p&gt;Recentemente ho affrontato alcun problemi legati all'&lt;strong&gt;hang di query distribuite &lt;/strong&gt;che utilizzano &lt;strong&gt;linked server&lt;/strong&gt;, creati con provider di terze parti, per accedere a sorgenti dati diverse da &lt;strong&gt;Sql Server&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Di seguito sono descritte le attività eseguite per individuare la causa e come risolvere i problemi.&lt;/p&gt;  &lt;h3&gt;Problema&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;In modalità casuale query utilizzanti linked server creati con &lt;strong&gt;provider di terze parti&lt;/strong&gt;, rimangono in esecuzione senza mai terminare&lt;/li&gt;    &lt;li&gt;In alcuni casi, dopo il verificarsi della prima query in hang, &lt;strong&gt;tutte le successive query &lt;/strong&gt;utilizzanti lo specifico Linked server, rimangono nello stesso stato di &lt;strong&gt;hang&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;L'unica soluzione al problema consiste nel &lt;strong&gt;riavviare Sql Server&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;L'esecuzione di una &lt;strong&gt;select &lt;/strong&gt;sulla sysprocesses &lt;strong&gt;mostra lo SPID&lt;/strong&gt;, avente in esecuzione la query, in stato di running con &lt;strong&gt;attesa su oledb&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Dati da raccogliere &lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Al fine di verificare l'effettiva attività rimasta in esecuzione all'interno di Sql server, catturare un mini dump o filtered dump del processo di Sql server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Di seguito il link su come utilizzare sqldumper per ottenere un filtered o mini dump   &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/917825/en-us"&gt;How to use the Sqldumper.exe utility to generate a dump file in SQL Server 2005&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Mini-dump file that includes indirectly referenced memory      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;Sqldumper.exe &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;ProcessID&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt; 0 0x0120:40&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Filtered dump file      &lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;Sqldumper.exe &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;ProcessID&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt; 0 0x8100       &lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;ProcessID&lt;/i&gt;&lt;i&gt;, in questo specifico caso, è l'ID del processo di Sql server&lt;/i&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Salvare il risultato di una &lt;font face="Courier New"&gt;select * from master..sysprocesses&lt;/font&gt;, per individuare facilmente il &lt;strong&gt;Thread Id avente in esecuzione la query&lt;/strong&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Analisi dei dati e Soluzione&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Installare i &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;Debugging Tools for Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Aprire &lt;strong&gt;windbg&lt;/strong&gt;      &lt;br /&gt;start--&amp;gt;program files--&amp;gt;Debugging Tools for Windows—&amp;gt;windbg&lt;/li&gt;    &lt;li&gt;Caricare i &lt;strong&gt;simboli pubblici&lt;/strong&gt;      &lt;br /&gt;Con Windbg aperto, selezionare File --&amp;gt;Symbols file path       &lt;br /&gt;Inserire &lt;font face="Courier New"&gt;srv*c:\symbols*http://msdl.microsoft.com/download/symbols&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Caricare il &lt;strong&gt;dump &lt;/strong&gt;prodotto      &lt;br /&gt;Con Windbg aperto , selezionare File --&amp;gt;Open Crash Dump, selezionare il dump precedentemente prodotto&lt;/li&gt;    &lt;li&gt;Individuare all'interno del dump il &lt;strong&gt;Thread ID &lt;/strong&gt;avente in esecuzione la query       &lt;br /&gt;Da Windbg, eseguire il comando ~ per avere la lista dei numeri relativi ai Thread ID e Thread instance      &lt;br /&gt;&lt;font face="Courier New"&gt;0:000&amp;gt; ~       &lt;br /&gt;. 0 Id: 2304.1500 Suspend: 0 Teb: bffdf000 Unfrozen        &lt;br /&gt;1 Id: 2304.141c Suspend: 0 Teb: bffdb000 Unfrozen        &lt;br /&gt;2 Id: 2304.11f4 Suspend: 0 Teb: bffda000 Unfrozen&lt;/font&gt;      &lt;br /&gt;      &lt;br /&gt;Convertire in esadecimale il valore presente nella colonna &lt;strong&gt;sysprocesses.kpid&lt;/strong&gt; in corrispondenza dello SPID avente in esecuzione la query verso linked server, tale valore sarà il ThreadID.      &lt;br /&gt;Cercare il valore così ottenuto tra i Thread ID nella lista sopra visualizzata, tenendo conto che nella riga &amp;quot;      &lt;br /&gt; &lt;font face="Courier New"&gt;2 Id: 2304.11f4 Suspend: 0 Teb: bffda000 Unfrozen&amp;quot;, 11f4       &lt;br /&gt;&lt;/font&gt; è il numero del Thread ID e 2 è numero del Thread Instance      &lt;br /&gt;      &lt;br /&gt;Da notare che a causa del &lt;strong&gt;thread switching&lt;/strong&gt;, il Thread ID potrebbe cambiare velocemente      &lt;br /&gt;      &lt;br /&gt;Per capire la relazione tra Spid. kpid e Thread Instance consiglio il seguente documento      &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/117559/en-us"&gt;INFO: How to Correlate Spid, Kpid, and Thread Instance&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Posizionarsi sul thread eseguente la query tramite il comando     &lt;br /&gt;&lt;font face="Courier New"&gt; ~~[ ThreadID]       &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;Nel caso del dump da me analizzato, il numero del ThreadID era 1890      &lt;br /&gt;&lt;font face="Courier New"&gt;41 Id: 2304.&lt;strong&gt;1890&lt;/strong&gt; Suspend: 0 Teb: bff93000 Unfrozen        &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;Per cui ho eseguito il comando &lt;font face="Courier New"&gt;~~[1890]       &lt;br /&gt;0:000&amp;gt; ~~[1890]         &lt;br /&gt;. 41 Id: 2304.1890 Suspend: 0 Teb: bff93000 Unfrozen        &lt;br /&gt;Start: msvcr80!_endthreadex+0x61 (781329e1)         &lt;br /&gt;Priority: 0 Priority class: 32 Affinity: ff        &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Visualizzare lo stack frame del thread tramite il comando k     &lt;br /&gt;&lt;font face="Courier New"&gt;0:041&amp;gt; k       &lt;br /&gt;# ChildEBP RetAddr        &lt;br /&gt;00 0f13d4b8 7739bf53 ntdll!KiFastSystemCallRet        &lt;br /&gt;01 0f13d4f0 7738965e user32!NtUserWaitMessage+0xc        &lt;br /&gt;02 0f13d518 7739f762 user32!InternalDialogBox+0xd0        &lt;br /&gt;03 0f13d7d8 7739f047 user32!SoftModalMessageBox+0x94b        &lt;br /&gt;04 0f13d928 7739eec9 user32!MessageBoxWorker+0x2ba        &lt;br /&gt;05 0f13d980 773d7d0d user32!MessageBoxTimeoutW+0x7a        &lt;br /&gt;06 0f13d9b4 773c42c8 user32!MessageBoxTimeoutA+0x9c        &lt;br /&gt;07 0f13d9d4 773c42a4 user32!MessageBoxExA+0x1b        &lt;br /&gt;&lt;/font&gt;&lt;b&gt;&lt;font face="Courier New"&gt;08 0f13d9f0 0cb13f41 user32!MessageBoxA+0x45         &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Courier New"&gt;&lt;b&gt;09 0f13dad4 0cb180ac ThirdPartydriver!......         &lt;br /&gt;&lt;/b&gt;0a 0f13db68 0cb1b196 ThirdPartydriver!......        &lt;br /&gt;0b 0f13dbb4 0cb1b4e6 ThirdPartydriver!......        &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;Dallo stack sopra riportato, possiamo capire come il &lt;strong&gt;driver di terze party&lt;/strong&gt;, rinominato come ThirdPartydriver, ha eseguito internamente a Sql server una &lt;strong&gt;message box&lt;/strong&gt;, motivo per cui, il thread non può proseguire l'attività.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Con buona probabilità, il driver di terze party ha eseguito una message box in seguito ad un &lt;strong&gt;problema interno o errore verificatosi&lt;/strong&gt;, per cui per continuare l'analisi del problema sarà necessario contattare il produttore del driver.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/raffaella-canobbio.aspx"&gt;Raffaella Canobbio&lt;/a&gt;    &lt;br /&gt;Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3240336" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Raffaella+Canobbio/default.aspx">Raffaella Canobbio</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>Emergenza Abruzzo – la risposta di Microsoft</title><link>http://blogs.technet.com/itasupport/archive/2009/04/09/emergenza-abruzzo-la-risposta-di-microsoft.aspx</link><pubDate>Thu, 09 Apr 2009 14:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3224648</guid><dc:creator>itentblg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3224648.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3224648</wfw:commentRss><description>&lt;P&gt;Le notizie che si susseguono sulla tragedia che ha colpito l’Abruzzo lunedì scorso sono veramente sconvolgenti. Tutti i dipendenti ed i partner della nostra azienda sono vicini alle persone coinvolte. &lt;STRONG&gt;&lt;A href="http://www.microsoft.com/italy/about/citizenship/abruzzo.mspx" target=_blank mce_href="http://www.microsoft.com/italy/about/citizenship/abruzzo.mspx"&gt;Microsoft Italia&lt;/A&gt;&lt;/STRONG&gt; si è attivata in questi giorni con una serie di azioni di supporto materiale e tecnico che speriamo possano alleviare per quanto possibile i disagi e le difficoltà in cui versano le popolazioni toccate da questo drammatico evento. &lt;BR&gt;Molte di queste iniziative sono e saranno oggetto di comunicazione direttamente alle Istituzioni coinvolte o destinatarie di questi contributi. Tra le azioni intraprese, segnaliamo &lt;STRONG&gt;a tutte le scuole, enti pubblici, piccole aziende e organizzazioni non profit&lt;/STRONG&gt; del territorio che avessero necessità di supporto tecnico informatico sui nostri prodotti a più ampia diffusione, di rivolgersi al numero &lt;STRONG&gt;02 70398398&lt;/STRONG&gt; e, indicando la provenienza dalle province colpite, le chiamate saranno dirottate ad un &lt;STRONG&gt;servizio gratuito&lt;/STRONG&gt; appositamente attivato per loro.&lt;/P&gt;
&lt;P&gt;Se vuoi partecipare attivamente per aiutare le popolazioni terremotate dell'Abruzzo, &lt;A href="http://events.it.msn.com/notizie/aiuti-terremoto.aspx" mce_href="http://events.it.msn.com/notizie/aiuti-terremoto.aspx"&gt;fai clic qui.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Grazie a tutti per il vostro aiuto.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/itasupport" mce_href="http://blogs.technet.com/itasupport"&gt;Supporto Tecnico Enterprise&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3224648" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Exchange+Team/default.aspx">Exchange Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Manager+Team/default.aspx">Manager Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category></item><item><title>SQL Server - Facciamo quattro conti con i dischi</title><link>http://blogs.technet.com/itasupport/archive/2009/02/09/sql-server-facciamo-quattro-conti-con-i-dischi.aspx</link><pubDate>Mon, 09 Feb 2009 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3199176</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3199176.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3199176</wfw:commentRss><description>&lt;p&gt;Mi capita spesso di incontrare evidenti problemi di performance sui vari volumi utilizzati da SQL Server, sia per un’errata scelta del livello di &lt;a href="http://it.wikipedia.org/wiki/RAID" target="_blank"&gt;RAID&lt;/a&gt; sia per un errato dimensionamento del numero di dischi necessari a soddisfare la quantità di operazioni al secondo richieste dai vari database.&lt;/p&gt;  &lt;p&gt;Le moderne &lt;a href="http://it.wikipedia.org/wiki/Storage_Area_Network" target="_blank"&gt;Storage Area Network&lt;/a&gt; dispongono di sistemi di gestione dei volumi che praticamente in tempo reale possono riallocare su meccaniche completamente differenti,anche come numero, quello che dal sistema operativo viene visto come disco (la lettera dell’unità): inoltre la grande quantità di memoria cache installata garantisce prestazioni teoriche tali da non far sorgere preoccupazioni, tant’è che per volumi dedicati alla “semplice” di repository normalmente si può risparmiare su qualche disco.&amp;#160; &lt;/p&gt;  &lt;p&gt;La tendenza attuale inoltre è quella che porta a vedere la SAN più come una riserva di GigaByte e TeraByte di spazio, piuttosto che come un sistema dal quale si possono estrarre notevoli performance, perché normalmente si chiede “Ho bisogno di&amp;#160; XXX Gb di spazio”&amp;#160; e non “Ho bisogno di&amp;#160; XXX Gb di spazio che sia in grado di garantirmi YYY operazioni di I/O al secondo”.&lt;/p&gt;  &lt;p&gt;E qui si inserisce un aspetto molto importante da considerare: SQL Server ( e anche Exchange ) all’avvio richiede l’apertura dei suoi file di database in modalità WriteThrouh, tramite il flag FILE_FLAG_WRITE_THROUGH e FILE_FLAG_NO_BUFFER della funzione Windows &lt;a href="http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx" target="_blank"&gt;CreateFile&lt;/a&gt;, ignorando quindi qualsiasi tipo di cache, da quella del sistema operativo a quella che può essere presente sul disco. Solo alcuni sistemi molto avanzati possono essere configurati per ignorare questi due flag e fare in modo che SQL Server “veda” la cache come “stable media” (praticamente un disco) garantendo così elevate performance, ma la maggior parte delle installazioni oggi presenti non è in grado: e qui iniziano i problemi perché dobbiamo fare i conti, nel vero senso del termine, con le pure caratteristiche fisiche dei dischi che compongono gli array (spesso uno solo) dove risiedono i file di dati di SQL Server.&lt;/p&gt;  &lt;p&gt;Vediamo quindi un generico disco SCSI di ultima generazione cosa può garantirci come numero di operazioni di I/O prima di iniziare ad accodare le richieste e allungare i tempi di risposta: il riferimento dei nostri calcoli è un &lt;a href="http://www.seagate.com/www/en-us/products/servers/cheetah/cheetah_15k.5/" target="_blank"&gt;Seagate Cheetah 15.5K&lt;/a&gt;, disponibile nei tagli 74Gb, 146Gb e 300Gb, i più comuni (purtroppo … come dimensione del singolo) usati oggi all’interno delle SAN.&lt;/p&gt;  &lt;p&gt;Il disco in questione presenta per i tre formati le seguenti caratteristiche:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;latenza media di 2ms (considerata come la metà del tempo necessario per compiere un intera rotazione dei piatti) &lt;/li&gt;    &lt;li&gt;Scrittura Random 4.0ms &lt;/li&gt;    &lt;li&gt;Lettura Random 3.5ms &lt;/li&gt;    &lt;li&gt;Scrittura Sequenziale 0.4ms &lt;/li&gt;    &lt;li&gt;Lettura Sequenziale 0.2ms &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tenendo presente che un disco inizia a dare evidenti segni di accodamento quando viene usato in modo continuativo oltre l’ 85% delle sue capacità (Cap. 8 di “Microsoft SQL Server 2000 Performance Tuning Technical Reference”), possiamo passare a valutare quanto rende il nostro Cheetah in termini di operazioni al secondo.&lt;/p&gt;  &lt;p&gt;&lt;a name="IMG_13"&gt;&lt;/a&gt;&lt;img title="clip_image001" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="207" alt="clip_image001" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/Facciamoquattroconticonidischi_B75E/clip_image001_f6fcb021-7528-4965-a681-12a2fc4b93ee.jpg" width="373" border="0" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;Relazione tra tempi di risposta e percentuale di utilizzo del disco&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Abbiamo che in modalità sequenziale una lettura richiede una latenza totale di 2.2ms mentre per una scrittura servono 2.4ms, per un totale rispettivamente di 455 e 417 operazioni/sec (= 1000m / latenza ). In modalità random i valori salgono 5.5ms e 6.0ms ottenendo così 182 e 167 operazioni/sec.&lt;/p&gt;  &lt;p&gt;A questi risultati dobbiamo sottrarre l’overhead della catena driver+controller+logica di gestione del disco, in sostanza tutto quello che si trova tra la richiesta di scrittura da parte del sistema operativo e la testina del disco, valutato intorno al 20% per le operazioni random e 10% per quelle sequenziali. I valori calcolati prima diventano così 364 e 333 per l’accesso sequenziale mentre per l’accesso random si scende a 164 e 150: abbiamo così il massimo ammissibile per ogni disco nel caso di uso non continuativo. I valori medi diventano quindi 348 nel caso di accesso sequenziale e 157 per l’accesso random.&lt;/p&gt;  &lt;p&gt;Prendendo ora come riferimento l’85% dell’utilizzo onde evitare evidenti accodamenti, i nostri valori diventano 309 e 283 nel primo caso e 139 e 128 nel secondo, con una media rispettivamente di 296 per l’accesso sequenziale e 133 per l’accesso random.&lt;/p&gt;  &lt;p&gt;Di seguito la tabella riassuntiva dei dati appena trovati:&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table cellspacing="0" cellpadding="2" width="772" align="center" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td align="center" width="125"&gt;           &lt;h5&gt;Latenza di rotazione              &lt;br /&gt;(1/2 giro) = 2ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="59"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td align="center" width="72"&gt;           &lt;h5&gt;Latenza totale&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="121"&gt;Operazioni/Sec&lt;/td&gt;          &lt;td align="center" width="116"&gt;Overhead:20% random, 10% sequenziale&lt;/td&gt;          &lt;td align="center" width="118"&gt;Media per uso non continuativo&lt;/td&gt;          &lt;td align="center" width="86"&gt;85% per evitare code&lt;/td&gt;          &lt;td align="center" width="73"&gt;Media&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="124"&gt;           &lt;h5&gt;Lettura Sequenziale&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="61"&gt;           &lt;h5&gt;0.2ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" align="center" width="73"&gt;           &lt;h5&gt;2.2ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="122"&gt;455&lt;/td&gt;          &lt;td align="center" width="116"&gt;364&lt;/td&gt;          &lt;td align="center" width="118"&gt;348&lt;/td&gt;          &lt;td align="center" width="86"&gt;309&lt;/td&gt;          &lt;td align="center" width="73"&gt;&lt;strong&gt;296&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="122"&gt;           &lt;h5&gt;Scrittura Sequenziale&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="62"&gt;           &lt;h5&gt;0.4ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" align="center" width="73"&gt;           &lt;h5&gt;2.4ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="123"&gt;417&lt;/td&gt;          &lt;td align="center" width="116"&gt;333&lt;/td&gt;          &lt;td valign="top" width="118"&gt;&amp;#160;&lt;/td&gt;          &lt;td align="center" width="86"&gt;283&lt;/td&gt;          &lt;td valign="top" width="72"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="121"&gt;           &lt;h5&gt;Lettura Random&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="63"&gt;           &lt;h5&gt;3.5ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" align="center" width="73"&gt;           &lt;h5&gt;5.5ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="123"&gt;182&lt;/td&gt;          &lt;td align="center" width="116"&gt;164&lt;/td&gt;          &lt;td align="center" width="118"&gt;157&lt;/td&gt;          &lt;td align="center" width="85"&gt;139&lt;/td&gt;          &lt;td align="center" width="72"&gt;&lt;strong&gt;133&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="123"&gt;           &lt;h5&gt;Scrittura Random&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="64"&gt;           &lt;h5&gt;4.0ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" align="center" width="73"&gt;           &lt;h5&gt;6.0ms&lt;/h5&gt;         &lt;/td&gt;          &lt;td align="center" width="124"&gt;167&lt;/td&gt;          &lt;td align="center" width="116"&gt;150&lt;/td&gt;          &lt;td valign="top" width="118"&gt;&amp;#160;&lt;/td&gt;          &lt;td align="center" width="86"&gt;128&lt;/td&gt;          &lt;td valign="top" width="73"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;Vediamo ora i vari livelli di RAID come si comportano dal punto di vista delle operazioni di I/O richieste ad ogni disco che compone un Array.&lt;/p&gt;  &lt;h3&gt;RAID0&lt;/h3&gt;  &lt;p&gt;Alla base di tutti i livelli abbiamo il RAID0, un semplice striping che non offre caratteristiche di fault tolerance e naturalmente non è raccomandato per fornire storage a SQL Server, anche se rappresenta il massimo livello di performance. Il numero di operazioni gestite da ogni disco componente l’array è dato da:&lt;/p&gt;  &lt;p&gt;I/O per Disco = (Letture + Scritture) / Numero di dischi&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;h3&gt;RAID1&lt;/h3&gt;  &lt;p&gt;Rappresenta il “classico” mirroring in cui i il meccanismo di “fault tolerance” viene implementato replicando i dati un secondo disco. dal punto di vista del calcolo abbiamo:&lt;/p&gt;  &lt;p&gt;I/O per Disco = [Letture + (2 * Scritture)] / 2&lt;/p&gt;  &lt;p&gt;Si nota quindi come in questo caso le operazioni di scrittura siano più onerose, mentre nel caso delle letture grazie al supporto “Split seeks”, che permette di distribuire equamente il carico sui due dischi, si comporta come un RAID0&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;RAID5&lt;/h3&gt;  &lt;p&gt;E’ probabilmente il livello più utilizzato perché fornisce un buon livello “fault tolerance” unitamente ad un elevato rapporto numero di dischi/spazio disponibile, e in determinate condizione anche buone performance. Il RAID5 introduce il concetto di “parità” per potere ricostruire il dato nel caso in cui uno dei dischi componenti un array dovesse rompersi: il calcolo della parità risulta essere anche il “tallone d’Achille” per le performance di questa implementazione. Al momento della creazione di un volume di questo tipo la parte riservata ai dati viene inizializzata a 0 ed il bit di parità resettato: per questo motivo sono necessarie quattro operazioni, la prima per leggere il dato esistente, la seconda lo stato della parità, la terza per riscrivere il nuovo dato&amp;#160; e la quarta per la nuova parità&amp;#160; dopo che il processore del controller ne ha calcolato il valore. Abbiamo quindi:&lt;/p&gt;  &lt;p&gt;I/O per Disco = [Letture + (4 * Scritture)] / Numero di dischi&lt;/p&gt;  &lt;p&gt;dal momento che come abbiamo visto sopra per ogni operazione di scrittura ne occorrono 4&lt;/p&gt;  &lt;h3&gt;RAID10&lt;/h3&gt;  &lt;p&gt;E' l'unica vera alternativa al RAID5 nel momento in cui si vuole il massimo delle performance unitamente al migliore livello di “fault tolerance” ed è in sostanza un mirroring al quale viene aggiunta la funzionalità di stripe.&lt;/p&gt;  &lt;p&gt;Il calcolo presenta la stessa formula del RAID0 ma con il denominatore che diventa uguale al numero di dischi (sempre multiplo di 2) &lt;/p&gt;  &lt;p&gt;I/O per Disco = [Letture + (2 * Scritture)] / Numero di dischi&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Sono previsti anche altri livelli di RAID: 3,4, 6 (un 5 con doppia parità) e 7 ( 3 o 4 con caching), ma il loro impiego è limitato a casi sporadici.&lt;/p&gt;  &lt;h3&gt;LA DOMANDA FATIDICA: &lt;strong&gt;RAID5&lt;/strong&gt; o &lt;strong&gt;RAID10&lt;/strong&gt;?&lt;/h3&gt;  &lt;p&gt;Purtroppo molto spesso le esigenze di spazio dominano nei confronti delle performance ed il RAID5, a parità di dischi fornisce sempre una capacità di memorizzazione superiore, ma una volta che questo problema passa in secondo piano sarebbe opportuno scegliere praticamente sempre il RAID10 dal punto di vista delle performance. Il RAID5 nel momento in cui la percentuale delle scritture supera il 10% del totale inizia a imporre un maggior carico ai singoli dischi dell’array.&lt;/p&gt;  &lt;p&gt;Prendiamo ad esempio il nostro disco visto sopra, da 188 operazioni random al secondo prima di iniziare ad accodare, e vediamo cosa succede una volta inserito in un array composto da 6 unità (configurazione molto diffusa), che si trova a gestire 500 operazioni al secondo.&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;Confronto sul carico dei dischi&lt;/em&gt;&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table cellspacing="0" cellpadding="2" width="498" align="center" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="239"&gt;           &lt;p&gt;&lt;b&gt;Rapporto Lettura/Scrittura&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;&lt;b&gt;RAID 5 I/Os&lt;/b&gt; &lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;sup&gt;[a]&lt;/sup&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="125"&gt;           &lt;p&gt;&lt;b&gt;RAID 10 I/Os&lt;/b&gt; &lt;/p&gt;            &lt;p&gt;&lt;b&gt;&lt;sup&gt;[b]&lt;/sup&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;100% letture; 0% scritture&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;(500 + 0) / 6              &lt;br /&gt;83 I/Os per disco&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="126"&gt;           &lt;p&gt;(500 + 0) / 6              &lt;br /&gt;83 I/Os per disco&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;90% letture; 10% scritture&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;(450 + 200) / 6              &lt;br /&gt;108 I/Os per disco&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="126"&gt;           &lt;p&gt;(450 + 100) / 6              &lt;br /&gt;91 I/Os per disco&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;75% letture; 25% scritture&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;(375 + 500) / 6              &lt;br /&gt;145 I/Os per disco&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="126"&gt;           &lt;p&gt;(375 + 250) / 6              &lt;br /&gt;104 I/Os per disco&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;50% letture; 50% scritture&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;(250 + 1000) / 10              &lt;br /&gt;208 I/Os per disco&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="126"&gt;           &lt;p&gt;(250 + 500) / 6              &lt;br /&gt;125 I/Os per disco&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;0% letture; 100% scritture&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;           &lt;p&gt;(0 + 2000) / 6              &lt;br /&gt;333 I/Os per disco&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="126"&gt;           &lt;p&gt;(0 + 1000) / 6              &lt;br /&gt;166 I/Os per disco&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="238"&gt;           &lt;h5&gt;&lt;a name="156"&gt;&lt;/a&gt;&lt;sup&gt;[&lt;/sup&gt;&lt;sup&gt;a&lt;/sup&gt;&lt;sup&gt;]&lt;/sup&gt; [Letture+ (4 * Scritture)] / N°Dischi &lt;/h5&gt;            &lt;h5&gt;&lt;a name="157"&gt;&lt;/a&gt;&lt;sup&gt;[&lt;/sup&gt;&lt;sup&gt;b&lt;/sup&gt;&lt;sup&gt;]&lt;/sup&gt; [Letture+ (2 * Scritture)] /N°Dischi&lt;/h5&gt;         &lt;/td&gt;          &lt;td valign="top" width="132"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="127"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;Come si vede già con il 10% di scritture il RAID5 impone più del 15% in più di carico su ogni disco, al 25% il confronto inizia a diventare molto sconveniente, e già prima del 50% supera il limite oltre il quale inizia l’accodamento. infine al 100% di scritture il RAID5 risulta evidentemente in difficoltà mentre il RAID10 si mantiene ancora entro le capacità del singolo disco. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mauro-munzi.aspx"&gt;Mauro Munzi&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3199176" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mauro+Munzi/default.aspx">Mauro Munzi</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Disk+Management/default.aspx">Disk Management</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL Server 2005 – Risolvere gli errori in fase d’installazione</title><link>http://blogs.technet.com/itasupport/archive/2009/01/26/sql-server-2005-risolvere-gli-errori-in-fase-d-installazione.aspx</link><pubDate>Mon, 26 Jan 2009 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3185795</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3185795.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3185795</wfw:commentRss><description>&lt;p&gt;In questo post descriverò un esempio pratico di come è stato analizzato e risolto un errore durante il tentativo di aggiunta di un nodo ad un Sql Server in cluster.&lt;/p&gt;  &lt;h3&gt;Problema&lt;/h3&gt;  &lt;p&gt;Sql Server 2005 è stato disinstallato da uno dei nodi di un cluster tramite la procedura di rimozione di un nodo descritta in questo articolo    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms191545(SQL.90).aspx"&gt;How to: Add or Remove Nodes in a SQL Server 2005 Failover Cluster (Setup)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Il tentativo di aggiungere nuovamente il nodo al cluster fallisce.&lt;/p&gt;  &lt;h3&gt;Dati da raccogliere&lt;/h3&gt;  &lt;p&gt;Tutte le informazioni per poter individuare un problema avvenuto durante il setup di Sql Server 2005 sono contenute nei file di log posizionati in &lt;strong&gt;%ProgramFiles%\microsoft sql server\90\setup bootstrap\log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In caso di installazioni di Sql Server in cluster, i log sono consolidati in un'unica cartella senza la necessità di doverli recuperare su ciascun nodo del cluster.&lt;/p&gt;  &lt;h3&gt;Analisi dei dati&lt;/h3&gt;  &lt;p&gt;Nei seguenti articoli del Books Online è contenuta una descrizione dei file di log di Sql Server 2005 e come analizzarli &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms143702(SQL.90).aspx" target="_blank"&gt;How to: View SQL Server 2005 Setup Log Files&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms144287(SQL.90).aspx" target="_blank"&gt;How to: Read a SQL Server 2005 Setup Log File&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Verificare il summary.txt&lt;/h4&gt;  &lt;p&gt;Il primo file da verificare è il summary.txt il quale contiene un riassunto per ciascuna componente installata.&lt;/p&gt;  &lt;p&gt;Per questo particolare problema il file summary.txt presentava un errore durante l’installazione del database engine e indicava il log SQLSetup000X_&amp;lt;sqlsrv&amp;gt;_SQL.log come il file contenente l’errore.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Machine : Sqlx      &lt;br /&gt;Product : Microsoft SQL Server 2005 (64-bit)       &lt;br /&gt;Product Version : 9.00.1399.06       &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;Install : Failed        &lt;br /&gt;&lt;/b&gt;Log File : \\sql\C$\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files\&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;SQLSetup000X_&amp;lt;sqlsrv&amp;gt;_SQL.log        &lt;br /&gt;&lt;/b&gt;Last Action : SetInstanceProperty       &lt;br /&gt;Error String : The setup has encountered an unexpected error while Setting Internal Properties. The error is: 183       &lt;br /&gt;Error Number : 29528&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Verificare il file di log contenente l’errore e indicato nel summary.txt&lt;/h4&gt;  &lt;p&gt;Per individuare l’errore corrispondente nel file di log SQLSetup000X_&amp;lt;srv&amp;gt;_SQL.log è necessario aprirlo in notepad ed effettuare una ricerca per “Return value 3”.&lt;/p&gt;  &lt;p&gt;La prima azione che va in errore è quella indicata nelle linee del file di log che precedono la stringa “Return value 3”.&lt;/p&gt;  &lt;p&gt;Come si può verificare da un estratto del file di log SQLSetup000X_&amp;lt;srv&amp;gt;_SQL.log sotto riportato, cercando per “Return value 3” , si individua l’azione generante l’errore. &lt;/p&gt;  &lt;p&gt;In questa situazione specifica l’errore consisteva in un tentativo di creare un file già esistente&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Doing Action: SetInstanceProperty      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;PerfTime Start: SetInstanceProperty : Mon Oct 27 15:06:05 2008      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;b&gt;Func Name='SetInstanceProperty'&lt;/b&gt;&amp;gt;       &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;MSI (s) (08!30) [15:06:05:344]: PROPERTY CHANGE: Adding SqlOriginalMachineName property. Its value is 'SQLX'.      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;MSI (s) (08!30) [15:06:05:344]: PROPERTY CHANGE: Adding SqlLegacyRegPath property. Its value is 'Microsoft SQL Server\INSTANCE'.      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Loaded DLL:      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\xmlrw.dll      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Version: 2.0.3609.0      &lt;br /&gt;&lt;/font&gt;&lt;b&gt;&lt;font face="Courier New"&gt;Error Code: 0x800700b7 (183)        &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font face="Courier New"&gt;Windows Error Text: Cannot create a file when that file already exists.        &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Courier New"&gt;Source File Name: sqlca\sqlcax.cpp      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Compiler Timestamp: Wed Sep 21 01:10:12 2005      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Function Name: SetInstanceProperty      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Source Line Number: 969      &lt;br /&gt;&lt;/font&gt;&lt;b&gt;&lt;font face="Courier New"&gt;Error Code: 183        &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font face="Courier New"&gt;MSI (s) (08!30) [15:08:48:663]: Product: Microsoft SQL Server 2005 (64-bit) -- Error 29528. The setup has encountered an unexpected error while Setting Internal Properties. The error is: 183        &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Courier New"&gt;Error 29528. The setup has encountered an unexpected error while Setting Internal Properties. The error is: 183      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;lt;EndFunc Name='LaunchFunction' Return='183' GetLastError='0'&amp;gt;      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Action ended 15:08:48: SetInstanceProperty.3EA9D9BF_D9D2_4023_B2A7_9E2137B2FB1B. &lt;b&gt;Return value 3&lt;/b&gt;.       &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Action ended 15:08:48: INSTALL. Return value 3.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Sapendo che l’istanza era stata precedentemente rimossa dal nodo in cui si è verificato il problema e indicando il setup un errore relativo al tentativo di creare un file già esistente, abbiamo proceduto manualmente alla rimozione dell’istanza di Sql Server sul nodo avente il problema secondo la procedura sotto riportata.&lt;/p&gt;  &lt;p&gt;Prima di indicare i punti della procedura utilizzata in questo specifico problema è bene tener presente che generalmente le procedure di rimozione manuale di un’istanza di Sql Server sono documentate pubblicamente nel seguente articolo: &lt;a href="http://support.microsoft.com/kb/909967/en-us"&gt;How to uninstall an instance of SQL Server 2005 manually&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Di seguito le attività effettuate sul nodo affetto dal problema in questa specifica situazione:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Backup delle chiavi di registry al fine di garantire il server da danni causati da eventuali errori      &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/322756/"&gt;How to back up and restore the registry in Windows&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Localizzazione della seguente chiave di registry HKLM\Software\Microsoft\Microsoft SQL Server\Instance Name\Sql ed individuazione del valore MSSql.X relativo all’istanza avente il problema &lt;/li&gt;    &lt;li&gt;All’interno di HKLM\Software\Microsoft\Microsoft SQL Server\Instance Name\Sql rimozione della chiave relativa all’istanza in questione &lt;/li&gt;    &lt;li&gt;Rinomina della cartella relativa all’istanza c:\program files\microsoft SQL Server\MSSQL.X &lt;/li&gt;    &lt;li&gt;Rimozione di HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.X &lt;/li&gt;    &lt;li&gt;Rimozione di      &lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer$InstanceName       &lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLSERVERAGENT$InstanceName &lt;/li&gt;    &lt;li&gt;Riavvio del nodo &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Il successivo tentativo di aggiunta dell’istanza al nodo del cluster fallì con un nuovo errore.&lt;/p&gt;  &lt;p&gt;Partendo sempre dalla verifica del file summary.txt è stato possibile individuare il secondo errore:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Machine : SQLX      &lt;br /&gt;Product : Microsoft SQL Server 2005 (64-bit)       &lt;br /&gt;Product Version : 9.00.1399.06       &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;Install : Failed        &lt;br /&gt;&lt;/b&gt;Log File : \\Sqlx\C$\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files\&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;SQLSetup000X_&amp;lt;sqlsrv&amp;gt;_SQL.log        &lt;br /&gt;&lt;/b&gt;Last Action : InstallFinalize       &lt;br /&gt;Error String : The setup has encountered an unexpected error while Completing Commit. The error is: &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;The cluster resource could not be found.        &lt;br /&gt;&lt;/b&gt;Error Number : 29528&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Il file di log SQLSetup000X_&amp;lt;sqlsrv&amp;gt;_SQL.log indicato nel summary.txt non conteneva il nome della risorsa cluster non trovata.&lt;/p&gt;  &lt;p&gt;Pertanto, non avendo ulteriori informazioni se non l’indicazione nel file di log di una risorsa cluster non trovata, sono state verificate le chiavi di registry associate alle risorse cluster relative ad un’installazione di Sql Server in cluster.&lt;/p&gt;  &lt;p&gt;Durante la verifica delle chiavi di registry relative a Sql Server, Sql Server Agent e Full Text Search è emerso che la chiave relativa a Sql Server Agent non presentava i valori di VirtualServerName e InstanceName&amp;#160;&amp;#160; che devono essere presenti per tale risorsa in un’installazione di Sql Server in cluster&lt;/p&gt;  &lt;p&gt;Di seguito le chiavi verificate:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;HKEY_LOCAL_MACHINE\Cluster\Resources\ 710f2e43-4387-4066-848f-c1e189f82349      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160; REG_SZ&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;SQL Server Agent&lt;/b&gt; (SQLINSTANCE)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;HKEY_LOCAL_MACHINE\Cluster\Resources\ 710f2e43-4387-4066-848f-c1e189f82349\&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;b&gt;Parameters        &lt;br /&gt;&lt;/b&gt;&amp;#160;&amp;#160;&amp;#160; ServiceName&amp;#160;&amp;#160;&amp;#160; REG_SZ&amp;#160;&amp;#160;&amp;#160; SQLAgent$QLINSTANCE       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; StartupParameters&amp;#160;&amp;#160;&amp;#160; REG_SZ&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UseNetworkName&amp;#160;&amp;#160;&amp;#160; REG_DWORD&amp;#160;&amp;#160;&amp;#160; 0x0&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Di seguito , come dovrebbero apparire i valori di &lt;b&gt;VirtualServerName &lt;/b&gt;e &lt;b&gt;InstanceName&lt;/b&gt; per la risorsa Sql Server Agent&lt;/p&gt;  &lt;p&gt;Per ricreare correttamente la chiave di registry relative alla risorsa Sql server Agent è stato seguito il seguente articolo    &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/810056/en-us"&gt;How to manually re-create the resource-specific registry keys for SQL Server cluster resources&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una volta ricreata correttamente la chiave di registry per la risorsa Sql Server Agent è stato possibile risolvere questo ultimo errore “The cluster resource could not be found” e aggiungere l’istanza di Sql Server al nodo del cluster.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/raffaella-canobbio.aspx"&gt;Raffaella Canobbio&lt;/a&gt;     &lt;br /&gt;Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3185795" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Raffaella+Canobbio/default.aspx">Raffaella Canobbio</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Setup/default.aspx">Setup</category></item><item><title>SQL Server - Analizzare un problema di timeout utilizzando Sqlnexus</title><link>http://blogs.technet.com/itasupport/archive/2009/01/05/sql-server-analizzare-un-problema-di-timeout-utilizzando-sqlnexus.aspx</link><pubDate>Mon, 05 Jan 2009 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3174718</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3174718.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3174718</wfw:commentRss><description>&lt;p&gt;Una delle richieste più frequenti che riceviamo nel team di supporto di Sql Server è quella di capire la causa determinante timeout applicativi durante l’esecuzione di query.&lt;/p&gt;  &lt;p&gt;In questo post spiegherò come utilizzare &lt;a href="http://www.codeplex.com/sqlnexus"&gt;Sqlnexus&lt;/a&gt; per effettuare velocemente l'analisi di un problema relativo alla lentezza di una query e determinante un timeout applicativo.&lt;/p&gt;  &lt;h3&gt;Problema &lt;/h3&gt;  &lt;p&gt;Errori di timeout, che si verificano in modalità casuale, durante una complessa attività applicativa.&lt;/p&gt;  &lt;h3&gt;Dati da raccogliere&lt;/h3&gt;  &lt;p&gt;Per capire la causa di problemi di timeout è necessario individuare l'attività su cui il timeout si verifica e se tale attività è stata affetta da blocchi o da problemi di performance sul server.&lt;/p&gt;  &lt;p&gt;Dal punto di vista di Sql server, l’analisi di un timeout verificatosi durante l’esecuzione di una query, può essere inizialmente affrontata come un generico problema di performance volto ad identificare la causa per cui una determinata query viene eseguita in un tempo superiore a quello impostato dal timeout applicativo. &lt;/p&gt;  &lt;p&gt;A tale scopo, durante il riprodursi del problema, si chiede generalmente di raccogliere dati di performance quali trace di &lt;a href="http://msdn.microsoft.com/en-us/library/ms173757(SQL.90).aspx"&gt;Sql server profiler&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ms191246(SQL.90).aspx"&gt;System monitor counters &lt;/a&gt;e trace di &lt;a href="http://support.microsoft.com/kb/271509/en-us"&gt;Blocker script&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Il tool in grado di raccogliere contemporaneamente tali informazioni è Pssdiag:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sql server 2000 è disponibile pubblicamente con interfaccia grafica al seguente indirizzo &lt;a href="http://support.microsoft.com/kb/830232"&gt;http://support.microsoft.com/kb/830232&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Sql server 2005 è possibile utilizzare il tool &lt;a href="http://msdn.microsoft.com/en-us/library/ms162833(SQL.90).aspx"&gt;Sqldiag&lt;/a&gt; compreso nell'installazione e non avente interfaccia grafica &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Per avere un esempio degli eventi e counters da catturare è possibile far riferimento al seguente articolo &lt;a href="http://support.microsoft.com/kb/224587/en-us"&gt;HOW TO: Troubleshoot Application Performance with SQL Server&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In questa situazione specifica sono stati raccolti i seguenti eventi:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Database: tutti gli eventi &lt;/li&gt;    &lt;li&gt;Errors and warning: tutti gli eventi &lt;/li&gt;    &lt;li&gt;Locks: Lock:Deadlock, Lock:Escalation, Lock:Timeout &lt;/li&gt;    &lt;li&gt;Objects: Auto Update Stats &lt;/li&gt;    &lt;li&gt;Performance: Show Plan Statistics &lt;/li&gt;    &lt;li&gt;Security Audit: Login, Login Failed, Logout &lt;/li&gt;    &lt;li&gt;Sessions: ExistingConnestion &lt;/li&gt;    &lt;li&gt;StoredProcedure: RPC:Completed, RPC:Starting, SP:CacheInsert, SP:CacheRemove, SP:Recompile, SP:StmtCompleted, SP:StmtStarting &lt;/li&gt;    &lt;li&gt;Tsql:SQL:BatchCompleted, SQL:BatchStarting, SQL:StmtCompleted, SQL:StmtStarting &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Analisi dei dati&lt;/h3&gt;  &lt;p&gt;In questa sezione vedremo come Sqlnexus possa essere utilizzato per analizzare i dati raccolti tramite le trace di Sql server profiler.&lt;/p&gt;  &lt;h4&gt;Installazione di Sqlnexus&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/sqlnexus" target="_blank"&gt;Scaricare il tool Sqlnexus&lt;/a&gt; e verificare le informazioni sul suo utilizzo&lt;/p&gt;  &lt;p&gt;Installare RML utilities &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7EDFA95A-A32F-440F-A3A8-5160C8DBE926&amp;amp;displaylang=en" target="_blank"&gt;RML Utilities for SQL Server – Versione a 32 bit (x86)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B60CDFA3-732E-4347-9C06-2D1F1F84C342&amp;amp;displaylang=en" target="_blank"&gt;RML Utilities for SQL Server – Versione a 64 bit (x64)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Caricamento dati in Sqlnexus&lt;/h4&gt;  &lt;p&gt;Avviare Sqlnexus.exe e connettersi a un Sql server in ambiente di test per effettuare l’analisi dei dati.    &lt;br /&gt;Una volta aperta l’interfaccia di Sqlnexus, cliccando su import, verrà visualizzata la finestra in cui impostare la cartella contenente i file di Sql server profiler raccolti con Pssdiag:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb1_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb1" border="0" alt="image_thumb1" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb1_thumb.png" width="546" height="238" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Visualizzazione dei dati di performance &lt;/h4&gt;  &lt;p&gt;Terminato l'import dei dati , potremo selezionare &lt;b&gt;Readtrace_main&lt;/b&gt;, nella sezione &lt;b&gt;Reports&lt;/b&gt;, per visualizzare l'analisi:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb3_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb3" border="0" alt="image_thumb3" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb3_thumb.png" width="547" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Selezionando i link presenti nella schermata di &lt;b&gt;Performance Overview&lt;/b&gt;, potremo visualizzare i report indicanti le query eseguite durante l’intervallo di tempo di cattura dei dati e il rispettivo consumo di risorse. Tali report costituiscono un aiuto essenziale nell’individuare le query aventi maggiore impatto in termini di tempo di esecuzione , letture , scritture o consumo di CPU.&lt;/p&gt;  &lt;h4&gt;Individuazione dei timeout &lt;/h4&gt;  &lt;p&gt;Siccome l’obiettivo di questo blog e quello di analizzare le query su cui è avvenuto un timeout applicativo, dovremo individuare gli eventi di &lt;a href="http://msdn.microsoft.com/en-us/library/ms190979(SQL.90).aspx"&gt;Attention&lt;/a&gt; avvenuti durante la cattura dei dati.     &lt;br /&gt;Per visualizzare tali eventi, selezioniamo &lt;b&gt;Interesting events&lt;/b&gt; e sarà visualizzato un grafico simile a quello sotto riportato:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb5_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb5" border="0" alt="image_thumb5" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb5_thumb.png" width="614" height="449" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Come è possibile verificare dalla schermata sopra riportata, supponendo di aver impostato gli eventi necessari in Sql server profiler, potremo visualizzare tramite un grafico facilmente leggibile, altri tipi di eventi quali la crescita dei datafile o i sort warning e associare o meno tali eventi al verificarsi del problema.    &lt;br /&gt;Selezionando il link &lt;b&gt;Attention&lt;/b&gt;, potremo visualizzare la query su cui è avvenuto il timeout e lo spid che stava eseguendo in quel momento la query.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb7_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb7" border="0" alt="image_thumb7" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb7_thumb.png" width="654" height="264" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Selezionando la query, potremo visualizzare tutti i dettagli sul tempo di esecuzione, le letture eseguite, il consumo di CPU e il nome del file di Sql server profiler contenente l’esecuzione della query durante l’avvenuto timeout.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb9_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb9" border="0" alt="image_thumb9" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb9_thumb.png" width="654" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dalla schermata sopra riportata è evidente che il tempo di esecuzione della query ha superato i 30 sec di timeout impostato dall’applicazione.&lt;/p&gt;  &lt;p&gt;Una volta individuata la query su cui si manifesta il problema, lo spid avente in esecuzione la query e l’intervallo di tempo in cui è avvenuto il timeout, potremo aprire la trace di Sql server profiler, filtrare per lo spid indicato da Sqlnexus, cercare la query affetta dal problema e analizzare in dettaglio i vari passi di esecuzione.&lt;/p&gt;  &lt;p&gt;Nell’esempio qui riportato, analizzando la trace di Sql server profiler in corrispondenza della query e dell’intervallo di tempo in cui si è verificato il problema è stato possibile verificare che il timeout applicativo era dovuto ad un tempo di esecuzione superiori ai 30 sec e che la maggior parte del tempo di esecuzione, circa 25 sec, era utilizzato nella ricompilazione e inserimento in cache.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb11_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb11" border="0" alt="image_thumb11" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/SQLServerAnalizzareunproblemaditimeoutut_9F72/image_thumb11_thumb.png" width="627" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Se la trace di Sql server profiler non dovesse bastare ad individuare la causa del problema, sarà necessario effettuare altre verifiche quali l’analisi del Blocker script e dei Performance counters in corrispondenza dell’intervallo di tempo in cui si è verificato il problema oppure la verifica dettagliata del piano di esecuzione della query per effettuare un adeguato tuning.&lt;/p&gt;  &lt;p&gt;Anche per analisi più approfondite Sqlnexus potrà aiutare, dandoci velocemente una panoramica delle attività presenti sul server durante il verificarsi del problema.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/raffaella-canobbio.aspx" target="_blank"&gt;Raffaella Canobbio&lt;/a&gt;     &lt;br /&gt;Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3174718" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Raffaella+Canobbio/default.aspx">Raffaella Canobbio</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>SQL Server 2005 Service Pack 3 + Cumulative Update 1 SP3</title><link>http://blogs.technet.com/itasupport/archive/2008/12/24/sql-server-2005-service-pack-3-cumulative-update-1-sp3.aspx</link><pubDate>Wed, 24 Dec 2008 16:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3172940</guid><dc:creator>itentblg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3172940.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3172940</wfw:commentRss><description>&lt;P&gt;A metà dicembre sono stati rilasciati la tanto attesa &lt;A href="http://technet.microsoft.com/en-us/sqlserver/bb895957.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/sqlserver/bb895957.aspx"&gt;SQL Server 2005 Service Pack 3&lt;/A&gt; ed anche la &lt;A href="http://support.microsoft.com/kb/959195" target=_blank mce_href="http://support.microsoft.com/kb/959195"&gt;Cumulative Update 1 Post-SP3&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Questo rilascio merita un breve commento per evitare possibili fraintendimenti.&lt;/P&gt;
&lt;P&gt;La SP3 contiene solo HOTFIX e nessun miglioramento. &lt;/P&gt;
&lt;P&gt;Le HOTFIX sono tutte quelle rilasciate nel periodo tra la SP2 e la Cumulative Update 9.&lt;/P&gt;
&lt;P&gt;Quindi si consiglia l’installazione della SP3 a tutti i clienti che hanno installato la SP2 ed una post-CU fino alla 9.&lt;/P&gt;
&lt;P&gt;Invece per i clienti che hanno già installato la CU10 o CU11 si consiglia di installare la SP3 ed anche il nuovo Cumulative Update 1 che è stato rilasciato qualche giorno dopo la SP3.&lt;/P&gt;
&lt;P&gt;Questo &lt;A href="http://support.microsoft.com/kb/959195" target=_blank mce_href="http://support.microsoft.com/kb/959195"&gt;Cumulative Update 1&lt;/A&gt; contiene tutte le hotfix incluse nella CU10 e nella CU11.&lt;/P&gt;
&lt;P&gt;Quindi l’ultima build di sql che contiene tutti gli ultimi aggiornamento è la 9.00.4207.&lt;/P&gt;
&lt;P&gt;Altro gradito rilascio è il &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=536fd7d5-013f-49bc-9fc7-77dede4bb075&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=536fd7d5-013f-49bc-9fc7-77dede4bb075&amp;amp;displaylang=en"&gt;Feature Pack SQL Server 2005 Service Pack 3&lt;/A&gt; che contiene tutti i componenti distribuibili di SQL Server 2005. Si consiglia di aggiornare tutti i client che devono dialogare con i componenti SP3 con questi nuovi Feature Pack.&lt;/P&gt;
&lt;P&gt;Ultimo ma non meno importante: BUONE FESTE!&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.technet.com/itasupport/pages/andrea-uggetti.aspx" mce_href="http://blogs.technet.com/itasupport/pages/andrea-uggetti.aspx"&gt;Andrea Uggetti&lt;/A&gt;&lt;BR&gt;Senior Support Escalation Engineer &lt;BR&gt;Microsoft Enterprise SQL Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3172940" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Andrea+Uggetti/default.aspx">Andrea Uggetti</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item><item><title>Rilasciata la Cumulative Update 10 di SQL Server 2005</title><link>http://blogs.technet.com/itasupport/archive/2008/10/21/rilasciata-la-cumulative-update-10-di-sql-server-2005.aspx</link><pubDate>Tue, 21 Oct 2008 13:37:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3139669</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3139669.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3139669</wfw:commentRss><description>&lt;p&gt;Fresca di “stampa” vi segnalo il rilascio dall’ultimo aggiornamento di SQL Server 2005 che è la Cumulative Update 10.&lt;/p&gt;  &lt;p&gt;Potete trovare tutte le informazioni in questo articolo:&lt;/p&gt;  &lt;p&gt;956854 Cumulative update package 10 for SQL Server 2005 Service Pack 2    &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;956854"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;956854&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Questa CU contiene 31 hotfix di cui ben 7 relative ad Analysis Service 2005. Per quanto riguarda AS ci sono almeno un paio di scenari interessanti in cui questo aggiornamento può dare dei benefici e sono quelli di un uso estremo di Cell Security oppure di query MDX che usano la funzione EXCEPT() nella clausula di Where.&lt;/p&gt;  &lt;p&gt;Vi ricordo che come ogni update è sempre consigliato testare l’aggiornamento in ambiente di test prima di “passarlo in produzione”. E’ possibile rimuovere la CU tramite “Add/Remove Program” presente nel Control Panel.&lt;/p&gt;  &lt;p&gt;Buona patch a tutti&lt;/p&gt;  &lt;p&gt;Andrea Uggetti    &lt;br /&gt;Support Escalation Engineer     &lt;br /&gt;Microsoft Enterprise SQL Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3139669" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Andrea+Uggetti/default.aspx">Andrea Uggetti</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item><item><title>Blog dedicati agli Sviluppatori</title><link>http://blogs.technet.com/itasupport/archive/2008/10/02/blogs-dedicati-allo-sviluppo.aspx</link><pubDate>Thu, 02 Oct 2008 12:19:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3131253</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3131253.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3131253</wfw:commentRss><description>&lt;P&gt;Ciao,&lt;BR&gt;Come avete modo di leggere dalla &lt;A class="" title=Biografia href="http://blogs.technet.com/itasupport/pages/marco-crippa.aspx" target=_blank mce_href="http://blogs.technet.com/itasupport/pages/marco-crippa.aspx"&gt;mia introduzione&lt;/A&gt; sono responsabile del team di supporto a SQL Server ma mi occupo anche del team di supporto agli Sviluppatori. Essendo questo blog orientato al mondo Enterprise speriamo che venga letto dagli amministratori di sistema e da quelli di database. Abbiamo quindi deciso di lasciare fuori da questa avventura temi relativi allo sviluppo software, ai compilatori ed al debug di codice. Lo sviluppo è però parte integrante della mia anima &lt;IMG title=:-) style="WIDTH: 19px; HEIGHT: 19px" height=19 alt=:-) hspace=0 src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/regular_smile.gif" width=19 border=0 mce_src="http://messenger.msn.com/MMM2006-04-19_17.00/Resource/emoticons/regular_smile.gif"&gt; e quindi mi permetto di segnalare a tutti gli sviluppatori le altre persone del team:&lt;/P&gt;
&lt;LI&gt;&lt;A class="" title="Carlo Cardella" href="http://blogs.msdn.com/carloc/" target=_blank mce_href="http://blogs.msdn.com/carloc/"&gt;Carlo Cardella&lt;/A&gt;&amp;nbsp;- Sviluppo Asp.Net e IIS&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" title="Raffaele Limosani" href="http://blogs.msdn.com/raffael" target=_blank mce_href="http://blogs.msdn.com/raffael"&gt;Raffaele Limosani&lt;/A&gt;&amp;nbsp;- Sviluppo Mobile&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" title="Andrea Liberatore" href="http://blogs.msdn.com/andreal/" target=_blank mce_href="http://blogs.msdn.com/andreal/"&gt;Andrea Liberatore&lt;/A&gt;&amp;nbsp;- Sviluppo &lt;SPAN lang=IT&gt;WCF, WSE e&amp;nbsp;.NET Remoting&lt;/SPAN&gt;&lt;/LI&gt;
&lt;P&gt;Dategli un’occhiata... magari avete qualche collega a cui i temi in oggetto possono interessare. I post sono in inglese per una ragione di diffusione!&lt;/P&gt;
&lt;P&gt;Alla prossima!&lt;/P&gt;
&lt;P&gt;&lt;A class="" title="Marco Crippa" href="http://blogs.technet.com/itasupport/pages/marco-crippa.aspx" target=_blank mce_href="http://blogs.technet.com/itasupport/pages/marco-crippa.aspx"&gt;Marco Crippa&lt;/A&gt;&lt;BR&gt;Escalation Manager&lt;BR&gt;Microsoft Developer Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3131253" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Manager+Team/default.aspx">Manager Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Marco+Crippa/default.aspx">Marco Crippa</category></item><item><title>Benvenuti nel mondo dei Cubi</title><link>http://blogs.technet.com/itasupport/archive/2008/09/24/benvenuti-nel-mondo-dei-cubi.aspx</link><pubDate>Wed, 24 Sep 2008 17:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127760</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3127760.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3127760</wfw:commentRss><description>&lt;P align=justify&gt;Quando mio figlio di 7 anni mi ha chiesto di spiegargli in poche parole che lavoro faccio gli ho risposto: “gioco con i cubi”, e lui tranquillo e serafico “mi raccomando stai attento agli spigoli”.&lt;/P&gt;
&lt;P align=justify&gt;Infatti è ormai da più di 4 anni che mi preoccupo di “smussare” gli “spigoli” dei cubi di Microsoft Analysis Services e da oggi tenterò di spiegarvi come smussarli e/o evitare di prendere troppi spigoli in faccia. &lt;/P&gt;
&lt;P align=justify&gt;Prima di addentrarci in qualcosa di tecnico vorrei darvi una serie di links e libri fondamentali per utilizzare Analysis Services (purtroppo sono tutti in inglese):&lt;/P&gt;
&lt;P align=justify&gt;Il primo link è quello di uno dei papà di Analysis Services &lt;A href="http://sqlblog.com/blogs/mosha/default.aspx" target=_blank mce_href="http://sqlblog.com/blogs/mosha/default.aspx"&gt;Microsoft OLAP by Mosha Pasumansky&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;Il blog di Mosha è fondamentale per capire in dettaglio il linguaggio MDX che è alla base dell’interrogazione dei database multidimensionali. Inoltre sta scrivendo un tool &lt;A href="http://www.mosha.com/msolap/mdxstudio.htm" target=_blank mce_href="http://www.mosha.com/msolap/mdxstudio.htm"&gt;MDXStudio&lt;/A&gt; che è fondamentale per ottimizzare le query ed evitare errori ingenui. Tornerò più avanti con una serie di esempi sull’uso di questo tool.&lt;/P&gt;
&lt;P align=justify&gt;Ci sono poi un paio di “ragazzi italiani” (spero che non si offendano) che stanno scrivendo una serie di blog sulla &lt;A href="http://www.sqlbi.com/Default.aspx?tabid=88" target=_blank mce_href="http://www.sqlbi.com/Default.aspx?tabid=88"&gt;Metodologia&lt;/A&gt; alla base dell’architettura ed implementazioni di soluzioni BI che vi può essere utile per capire le basi della BI. Vi consiglio anche i loro blogs &lt;A href="http://sqlblog.com/blogs/marco_russo/default.aspx" target=_blank mce_href="http://sqlblog.com/blogs/marco_russo/default.aspx"&gt;SQLBI – Marco Russo&lt;/A&gt; e &lt;A href="http://sqlblog.com/blogs/Alberto_Ferrari/default.aspx" target=_blank mce_href="http://sqlblog.com/blogs/Alberto_Ferrari/default.aspx"&gt;Alberto Ferrari&lt;/A&gt;.&lt;/P&gt;
&lt;P align=justify&gt;Un altro sito fondamentale per trovare documentazione e whitepaper autorevoli di Analysis Service è &lt;A href="http://sqlcat.com/tags/Analysis+Services/default.aspx" target=_blank mce_href="http://sqlcat.com/tags/Analysis+Services/default.aspx"&gt;SQLCat&lt;/A&gt;. Il Customer Advisor Team è fatto da persone Microsoft con un passato di Program Manager del prodotto oppure con una vasta esperienza nell’uso dei medesimi. Il loro scopo è quello di portare al successo i progetti più arditi in ambito di BI (ma non solo) e dall’esperienza maturata pubblicano una serie di post di blog e di whitepaper. &lt;/P&gt;
&lt;P align=justify&gt;Alla fine vi consiglio i due libri fondamentali a riguardo di Analysis Service 2005 ed il linguaggio MDX.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_2.png" mce_href="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_2.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height=207 alt=image src="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_thumb.png" width=159 align=left border=0 mce_src="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://www.amazon.com/Microsoft-Server-2005-Analysis-Services/dp/0672327821/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1222265848&amp;amp;sr=8-1" target=_blank mce_href="http://www.amazon.com/Microsoft-Server-2005-Analysis-Services/dp/0672327821/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1222265848&amp;amp;sr=8-1"&gt;Microsoft SQL Server 2005 Analysis Services&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Authors: Edward Melomed, Irina Gorbach, Alexander Berger, Py Bateman &lt;BR&gt;Paperback: 864 pages &lt;BR&gt;Publisher: Sams; 1 edition (December 25, 2006) &lt;BR&gt;Language: English &lt;BR&gt;ISBN-10: 0672327821 &lt;BR&gt;ISBN-13: 978-0672327827 &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_4.png" mce_href="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_4.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height=204 alt=image src="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_thumb_1.png" width=154 align=left border=0 mce_src="https://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/BenvenutinelmondodeiCubi_E2B4/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://www.amazon.com/MDX-Solutions-Microsoft-Analysis-Services/dp/0471748080/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1222266038&amp;amp;sr=1-1" target=_blank mce_href="http://www.amazon.com/MDX-Solutions-Microsoft-Analysis-Services/dp/0471748080/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1222266038&amp;amp;sr=1-1"&gt;MDX Solutions: With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Authors: George Spofford, Sivakumar Harinath, Christopher Webb, Dylan Hai Huang, Francesco Civardi &lt;BR&gt;Paperback: 744 pages &lt;BR&gt;Publisher: Wiley; 2 edition (March 6, 2006) &lt;BR&gt;Language: English &lt;BR&gt;ISBN-10: 0471748080 &lt;BR&gt;ISBN-13: 978-0471748083 &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="" title="Andrea Uggetti" href="http://blogs.technet.com/itasupport/pages/andrea-uggetti.aspx" target=_blank mce_href="http://blogs.technet.com/itasupport/pages/andrea-uggetti.aspx"&gt;Andrea Uggetti&lt;/A&gt;&lt;BR&gt;Support Escalation Engineer&lt;BR&gt;Microsoft Enterprise SQL Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127760" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/SQL+Team/default.aspx">SQL Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Andrea+Uggetti/default.aspx">Andrea Uggetti</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item></channel></rss>