Database tempdbtempdb Database

Il database di sistema tempdb è una risorsa globale disponibile a tutti gli utenti connessi all'istanza di SQL ServerSQL Server e viene usata per contenere gli elementi seguenti:The tempdb system database is a global resource that is available to all users connected to the instance of SQL ServerSQL Server and is used to hold the following:

  • Oggetti utente temporanei creati in modo esplicito, ad esempio tabelle temporanee globali o locali, stored procedure temporanee, variabili di tabella o cursori.Temporary user objects that are explicitly created, such as: global or local temporary tables, temporary stored procedures, table variables, or cursors.

  • Oggetti interni creati dal Motore di database di SQL ServerSQL Server Database Engine, ad esempio tabelle di lavoro in cui archiviare i risultati intermedi delle operazioni di spooling o di ordinamento.Internal objects that are created by the Motore di database di SQL ServerSQL Server Database Engine, for example, work tables to store intermediate results for spools or sorting.

  • Versioni di riga generate dalle transazioni di modifica dei dati in un database in cui viene usato il Read committed tramite isolamento del controllo delle versioni delle righe o transazioni di isolamento dello snapshot.Row versions that are generated by data modification transactions in a database that uses read-committed using row versioning isolation or snapshot isolation transactions.

  • Versioni di riga generate dalle transazioni di modifica dei dati per le caratteristiche, ad esempio le operazioni sugli indici online, la caratteristica MARS (Multiple Active Result Set) e i trigger AFTER.Row versions that are generated by data modification transactions for features, such as: online index operations, Multiple Active Result Sets (MARS), and AFTER triggers.

    In tempdb viene registrato un numero minimo di operazioniOperations within tempdb are minimally logged. Consente il rollback delle transazioni.This enables transactions to be rolled back. tempdb viene ricreato ogni volta che SQL ServerSQL Server viene avviato in modo che il sistema inizi sempre con una copia pulita del database.tempdb is re-created every time SQL ServerSQL Server is started so that the system always starts with a clean copy of the database. Poiché le tabelle e le stored procedure temporanee vengono eliminate automaticamente al momento della disconnessione e poiché al momento della chiusura del sistema non vi sono connessioni attive,Temporary tables and stored procedures are dropped automatically on disconnect, and no connections are active when the system is shut down. nessuna parte del database tempdb viene salvata per le sessioni successive di SQL ServerSQL Server .Therefore, there is never anything in tempdb to be saved from one session of SQL ServerSQL Server to another. Le operazioni di backup e di ripristino non sono consentite nel database tempdb.Backup and restore operations are not allowed on tempdb.

Proprietà fisiche di tempdbPhysical Properties of tempdb

Nella tabella seguente sono elencati i valori iniziali di configurazione dei dati e dei file di log di tempdb .The following table lists the initial configuration values of the tempdb data and log files. Le dimensioni di questi file possono variare leggermente a seconda dell'edizione di SQL ServerSQL Server.The sizes of these files may vary slightly for different editions of SQL ServerSQL Server.

FileFile Nome logicoLogical name Nome fisicoPhysical name Dimensioni inizialiInitial size Aumento di dimensioni del fileFile growth
Dati primariPrimary data tempdevtempdev tempdb.mdftempdb.mdf 8 megabyte8 megabytes Aumento automatico di 64 MB fino a quando il disco risulta pienoAutogrow by 64 MB until the disk is full
File di dati secondariSecondary data files temp#temp# tempdb_mssql_#.ndftempdb_mssql_#.ndf 8 megabyte8 megabytes Aumento automatico di 64 MB fino a quando il disco risulta pienoAutogrow by 64 MB until the disk is full
File di logLog templogtemplog templog.ldftemplog.ldf 8 megabyte8 megabytes Aumento automatico di 64 megabyte fino a un massimo di 2 terabyteAutogrow by 64 megabytes to a maximum of 2 terabytes

* Il numero di file dipende dal numero di core (logici) del computer.* The number of files depends on the number of (logical) cores on the machine. Il valore sarà il numero di core o 8, a seconda di quale sia il valore inferiore.The value will be the number of cores or 8, whichever is lower.
Il valore predefinito per il numero di file di dati si basa sulle linee guida generali in KB 2154845.The default value for the number of data files is based on the general guidelines in KB 2154845.

Miglioramenti delle prestazioni in tempdbPerformance Improvements in tempdb

In SQL ServerSQL Serverle prestazioni di tempdb sono state migliorate come segue:In SQL ServerSQL Server, tempdb performance is improved in the following ways:

  • È possibile memorizzare nella cache tabelle temporanee e variabili di tabella.Temporary tables and table variables may be cached. La memorizzazione nella cache consente di eseguire molto rapidamente le operazioni di eliminazione e creazione degli oggetti temporanei e di ridurre i problemi di contesa nell'allocazione delle pagine.Caching allows operations that drop and create the temporary objects to execute very quickly and reduces page allocation contention.

  • Il protocollo di latch delle pagine di allocazione è stato migliorato.Allocation page latching protocol is improved. In questo modo è possibile ridurre il numero di latch di aggiornamento (UP) usati.This reduces the number of UP (update) latches that are used.

  • L'overhead di registrazione per il database tempdb è stato ridotto.Logging overhead for tempdb is reduced. In questo modo si riduce l'utilizzo di banda per operazioni di I/O su disco nel file di log di tempdb .This reduces disk I/O bandwidth consumption on the tempdb log file.

  • Durante l'installazione di una nuova istanza vengono aggiunti più file di dati di tempdb.Setup adds multiple tempdb data files during a new instance installation. Questa attività può essere eseguita con un nuovo controllo input dell'interfaccia utente nella sezione Configurazione del motore di database e con un parametro della riga di comando /SQLTEMPDBFILECOUNT.This task can be accomplished with the new UI input control on the Database Engine Configuration section and a command line parameter /SQLTEMPDBFILECOUNT. Per impostazione predefinita, il programma di installazione aggiunge un numero di file tempdb pari al numero di CPU oppure a 8, a seconda di quale sia il valore inferiore.By default, setup will add as many tempdb files as the CPU count or 8, whichever is lower.

  • Se ci sono più file di dati tempdb , le dimensioni di tutti i file aumenteranno contemporaneamente e della stessa quantità in base alle impostazioni specificate.When there are multiple tempdb data files, all files will autogrow at same time and by the same amount depending on growth settings. Il flag di traccia 1117 non è più richiesto.Trace flag 1117 is no longer required.

  • Tutte le allocazioni in tempdb usano extent uniformi.All allocations in tempdb use uniform extents. Il flag di traccia 1118 non è più richiesto.Trace flag 1118 is no longer required.

  • Per il filegroup primario, la proprietà AUTOGROW_ALL_FILES è attivata e non può essere modificata.For the primary filegroup, the AUTOGROW_ALL_FILES property is turned on and the property cannot be modified.

Spostamento dei dati e dei file di log di tempdbMoving the tempdb Data and Log Files

Per spostare i file di log e i dati tempdb , vedere Spostare i database di sistema.To move the tempdb data and log files, see Move System Databases.

Opzioni di databaseDatabase Options

Nella tabella seguente sono elencati i valori predefiniti delle singole opzioni di database di tempdb e viene indicato se l'opzione è modificabile.The following table lists the default value for each database option in the tempdb database and whether the option can be modified. Per visualizzare le impostazioni correnti di queste opzioni, usare la vista del catalogo sys.databases .To view the current settings for these options, use the sys.databases catalog view.

Opzione di databaseDatabase option Valore predefinitoDefault value ModificabileCan be modified
ALLOW_SNAPSHOT_ISOLATIONALLOW_SNAPSHOT_ISOLATION OFFOFF Yes
ANSI_NULL_DEFAULTANSI_NULL_DEFAULT OFFOFF Yes
ANSI_NULLSANSI_NULLS OFFOFF Yes
ANSI_PADDINGANSI_PADDING OFFOFF Yes
ANSI_WARNINGSANSI_WARNINGS OFFOFF Yes
ARITHABORTARITHABORT OFFOFF Yes
AUTO_CLOSEAUTO_CLOSE OFFOFF NoNo
AUTO_CREATE_STATISTICSAUTO_CREATE_STATISTICS ONON Yes
AUTO_SHRINKAUTO_SHRINK OFFOFF NoNo
AUTO_UPDATE_STATISTICSAUTO_UPDATE_STATISTICS ONON Yes
AUTO_UPDATE_STATISTICS_ASYNCAUTO_UPDATE_STATISTICS_ASYNC OFFOFF Yes
CHANGE_TRACKINGCHANGE_TRACKING OFFOFF NoNo
CONCAT_NULL_YIELDS_NULLCONCAT_NULL_YIELDS_NULL OFFOFF Yes
CURSOR_CLOSE_ON_COMMITCURSOR_CLOSE_ON_COMMIT OFFOFF Yes
CURSOR_DEFAULTCURSOR_DEFAULT GLOBALGLOBAL Yes
Opzioni relative alla disponibilità del databaseDatabase Availability Options ONLINEONLINE

MULTI_USERMULTI_USER

READ_WRITEREAD_WRITE
NoNo

NoNo

NoNo
DATE_CORRELATION_OPTIMIZATIONDATE_CORRELATION_OPTIMIZATION OFFOFF Yes
DB_CHAININGDB_CHAINING ONON NoNo
ENCRYPTIONENCRYPTION OFFOFF NoNo
MIXED_PAGE_ALLOCATIONMIXED_PAGE_ALLOCATION OFFOFF NoNo
NUMERIC_ROUNDABORTNUMERIC_ROUNDABORT OFFOFF Yes
PAGE_VERIFYPAGE_VERIFY CHECKSUM per nuove installazioni di SQL ServerSQL Server.CHECKSUM for new installations of SQL ServerSQL Server.

NONE per aggiornamenti di SQL ServerSQL Server.NONE for upgrades of SQL ServerSQL Server.
Yes
PARAMETERIZATIONPARAMETERIZATION SIMPLESIMPLE Yes
QUOTED_IDENTIFIERQUOTED_IDENTIFIER OFFOFF Yes
READ_COMMITTED_SNAPSHOTREAD_COMMITTED_SNAPSHOT OFFOFF NoNo
RECOVERYRECOVERY SIMPLESIMPLE NoNo
RECURSIVE_TRIGGERSRECURSIVE_TRIGGERS OFFOFF Yes
Opzioni relative a Service BrokerService Broker Options ENABLE_BROKERENABLE_BROKER Yes
TRUSTWORTHYTRUSTWORTHY OFFOFF NoNo

Per una descrizione di queste opzioni di database, vedere Opzioni ALTER DATABASE SET (Transact-SQL).For a description of these database options, see ALTER DATABASE SET Options (Transact-SQL).

RestrizioniRestrictions

Di seguito sono riportate le operazioni che non è possibile eseguire sul database tempdb :The following operations cannot be performed on the tempdb database:

  • Aggiunta di filegroup.Adding filegroups.

  • Backup o ripristino del database.Backing up or restoring the database.

  • Modifica delle regole di confronto.Changing collation. Le regole di confronto predefinite corrispondono a quelle del server.The default collation is the server collation.

  • Modifica del proprietario del database.Changing the database owner. tempdb è di proprietà di sa.tempdb is owned by sa.

  • Creazione di uno snapshot del database.Creating a database snapshot.

  • Eliminazione del database.Dropping the database.

  • Eliminazione dell'utente guest dal database.Dropping the guest user from the database.

  • Abilitazione dell'acquisizione dei dati delle modifiche.Enabling change data capture.

  • Partecipazione al mirroring del database.Participating in database mirroring.

  • Rimozione del filegroup primario, del file di dati primario o del file di log.Removing the primary filegroup, primary data file, or log file.

  • Ridenominazione del filegroup primario o del database.Renaming the database or primary filegroup.

  • Esecuzione di DBCC CHECKALLOC.Running DBCC CHECKALLOC.

  • Esecuzione di DBCC CHECKCATALOG.Running DBCC CHECKCATALOG.

  • Impostazione del database su OFFLINE.Setting the database to OFFLINE.

  • Impostazione del database o del filegroup primario su READ_ONLY.Setting the database or primary filegroup to READ_ONLY.

AutorizzazioniPermissions

Qualsiasi utente può creare oggetti temporanei in tempdb.Any user can create temporary objects in tempdb. Gli utenti possono accedere solo ai propri oggetti, a meno che non ottengano ulteriori autorizzazioni.Users can only access their own objects, unless they receive additional permissions. È possibile revocare l'autorizzazione per la connessione a tempdb per impedire a un utente di utilizzarlo, tuttavia questa operazione non è consigliabile poiché in alcune operazioni di routine è richiesto l'utilizzo di tempdb.It is possible to revoke the connect permission to tempdb to prevent a user from using tempdb, but this is not recommended as some routine operations require the use of tempdb.

Opzione SORT_IN_TEMPDB per gli indiciSORT_IN_TEMPDB Option For Indexes

Database di sistema.System Databases

sys.databases (Transact-SQL)sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)sys.master_files (Transact-SQL)

Spostare file del databaseMove Database Files

Vedere ancheSee Also

Utilizzo di tempdb in SQL Server 2005Working with tempdb in SQL Server 2005