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.aspLa 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!