Come ridurre la dimensione del database tempdb in SQL Server

Traduzione articoli Traduzione articoli
Identificativo articolo: 307487 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo vengono descritti tre metodi che Ŕ possibile utilizzare per compattare il database tempdb su una dimensione inferiore rispetto alla sua ultima dimensione configurata. Il primo metodo offre il controllo completo della dimensione dei file del database tempdb . Tuttavia, il primo metodo richiede di riavviare il sistema Microsoft SQL Server. Il secondo metodo compatta il database tempdb e potrebbe essere necessario riavviare SQL Server. Il terzo metodo consente di ridurre i singoli file del database tempdb . Gli ultimi due metodi richiedono che nessuna attivitÓ pu˛ verificarsi nel database tempdb durante l'operazione di compattazione.

NotaáSe si utilizza SQL Server 2005, si applicano anche questi metodi. Tuttavia, si dovrebbe utilizzare SQL Server Management Studio anzichÚ Enterprise Manager e Query Analyzer per eseguire queste operazioni. Inoltre tenere presente che la Management Studio di SQL Server in SQL Server 2005 non mostra le dimensioni corrette dei file di tempdb dopo un'operazione di compattazione. Il valore "Spazio allocato" viene sempre estratti dal DMV sys. master_files e questo valore non viene aggiornato dopo un'operazione di riduzione si verifica per il database tempdb . Per trovare la dimensione corretta del file di tempdb dopo un'operazione di compattazione, eseguire l'istruzione seguente in SQL Server Management Studio:
use tempdb
select (size*8) as FileSizeKB from sys.database_files

NotaáSQL Server 2008 non Ŕ interessato dal problema che la dimensione non corretta dei file di tempdb viene visualizzata dopo un'operazione di compattazione.

Informazioni del database tempdb

Il database tempdb Ŕ un'area di lavoro temporanea. Tra l'altro, SQL Server utilizza il database tempdb per le seguenti operazioni:
  • Archiviazione delle tabelle temporanee create in modo esplicito
  • Tabelle di lavoro che contengono i risultati intermedi creati durante l'elaborazione e l'ordinamento di query
  • Materializzare i cursori statici
SQL Server registra solo le informazioni sufficienti nel log delle transazioni di tempdb per eseguire il rollback di una transazione, ma non ripristina le transazioni durante il ripristino del database. Questa funzione aumenta le prestazioni delle istruzioni INSERT nel database tempdb. Inoltre, non Ŕ necessario registrare le informazioni per ripristinare le transazioni perchÚ il database tempdb viene ricreato ogni volta che si riavvia SQL Server. Pertanto, non ha alcuna transazione di eseguire il rollforward o rollback. All'avvio di SQL Server il database tempdb viene ricreato utilizzando una copia del database model e tempdb viene reimpostato l'ultima dimensione configurata.

Per impostazione predefinita, il database tempdb Ŕ configurato su aumento automatico delle dimensioni necessarie. Pertanto, questo database pu˛ crescere in tempo a una dimensione supera alla dimensione desiderata. Un riavvio semplice di SQL Server Ripristina le dimensioni di tempdb l'ultima dimensione configurata. Le dimensioni sono la dimensione esplicita ultima che Ŕ stata impostata utilizzando un file di dimensioni Modifica operazione come l'istruzione ALTER DATABASE che utilizza l'opzione MODIFY FILE o l'istruzione DBCC SHRINKFILE.

╚ possibile utilizzare tre metodi seguenti per ridurre tempdb a dimensioni inferiori rispetto alla dimensione configurata.

Metodo 1: I comandi Transact-SQL uso

Metodo 2: Utilizzare il comando DBCC SHRINKDATABASE

Metodo 3: Utilizzare il comando DBCC SHRINKFILE

Effetti dell'esecuzione dell'istruzione DBCC SHRINKDATABASE o DBCCSHRINKFILE mentre tempdb Ŕ in uso

Se viene utilizzato il database tempdb , provare a ridurli utilizzando DBCC SHRINKDATABASE o comandi DBCC SHRINKFILE, Ŕ possibile che venga visualizzato pi¨ errori di coerenza analoghi ai seguenti e l'operazione di compattazione potrebbe non riuscire:
  • Server: Msg 2501, livello 16, stato 1, riga 1 Impossibile trovare la tabella denominata '1525580473'. Controllare sysobjects.
  • Server: Msg 8909, livello 16, stato 1, riga 0 Tabella danneggiate: Oggetto 1 ID, ID di indice 0, pagina ID % S_PGID. PageId nell'intestazione di pagina = % S_PGID.
Sebbene errore 2501 potrebbe non indicare alcun danneggiamento nel database tempdb, questo errore fa sý che l'operazione di compattazione. D'altro canto, l'errore 8909 potrebbe indicare danneggiamento nel database tempdb . Riavviare SQL Server per ricreare il database tempdb e pulire gli errori di coerenza. Tuttavia, tenere presente che potrebbero esistere altri motivi per errori di danneggiamento di dati fisici come errore 8909 e quelli che includono problemi del sottosistema di input/output.

RIFERIMENTI

Documentazione in linea; di SQL Server argomenti: "DBCC SHRINKFILE"; "DBCC SHRINKDATABASE"

ProprietÓ

Identificativo articolo: 307487 - Ultima modifica: martedý 16 luglio 2013 - Revisione: 2.1
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi:á
kbsqlsetup kbhowtomaster kbmt KB307487 KbMtit
Traduzione automatica articoli
IMPORTANTE: il presente articolo Ŕ stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre Ŕ perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilitÓ per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualitÓ della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 307487
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com