SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Query che saturano il disco, come ovviare al problema

Utilizzando il Management Studio di SQL Server 2005 (ma questo vale anche per il Query Analyzer di SQL Server 2000) ed eseguendo query che lavorano con grosse moli di dati, potrebbe accadere di trovarsi di fronte al messaggio "Low Disk Space on disk c:".
In effetti, per le impostazioni di default, SQL Server esegue un flush dei dati ritornati su di un file temporaneo situato in "C:\Documents And Settings\\Impostazioni Locali\Temp" e chiamato con nome "tmpXXX.tmp".
Quando le dimensioni del file prodotto superano lo spazio disponibile sul disco C:, la query non può essere portata a termine (e nemmeno quelle degli altri utenti che sono su sql server della stessa macchina).

Il problema è che non ci sono impostazioni da poter cambiare su management studio.
Abbiamo scoperto con Andrea Benedetti, MVP di SQL Server, che non si tratta di un'impostazione di SQL Server.
Per bypassare il problema dobbiamo necessariamente trovare un workaround.
L'idea è quella di spostare il flush dei dati su di un nuovo disco (se disponibile, ovviamente)

Quindi, dalle proprietà di Risorse del Computer --> Avanzate --> Variabili d'ambiente,
nella sezione "Variabili dell'utente per [nome utente]" (le prime e non le "Variabili di sistema") è necessario modificare sia la variabile TEMP che TMP.

In realtà, abbiamo scoperto che il problema sta nell'oggetto datagrid della griglia dei risultati (sia di management studio che di Query Analyzer) che ha necessità di avere i dati memorizzati su disco.

Ecco cosa indica Andrea:
"Per questo motivo avviene la creazione dei file temporanei che vengono poi
posizionati tramite la funzione (di sistema operativo) GetTempPath.
Qui la documentazione ufficiale:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/gettemppath.asp
La funzione verifica l'esistenza di quattro variabili di sistema, in un ordine
stabilito, utilizzando la prima trovata:
 1. path della variabile di sistema TMP
 2. path della variabile di sistema TEMP
 3. path della variabile di sistema USERPROFILE
 4. directory windows"

Quindi, il file viene prodotto solo se il risultato della query viene visualizzato in griglia (Results to grid). Se utilizziamo la disposizione dei risultati su "visualizzazione testo (Results to text)" il file non viene prodotto. Di conseguenza, utilizzando quest'ultima metodologia non è necessario nemmeno cambiare le variabili di ambiente.

Stay tuned!
Categoria: SQL Server 2005
venerdì, 11 ago 2006 Ore. 16.09
Statistiche
  • Views Home Page: 539.153
  • Views Posts: 953.754
  • Views Gallerie: 540.590
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003