Banco de dados tempdbtempdb Database

ESTE TÓPICO APLICA-SE A: simSQL ServersimBanco de Dados SQL do AzurenãoSQL Data Warehouse do AzurenãoParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

O banco de dados do sistema tempdb é um recurso global disponível para todos os usuários conectados à instância do SQL ServerSQL Server ou conectados ao Banco de Dados SQL.The tempdb system database is a global resource that is available to all users connected to the instance of SQL ServerSQL Server or connected to SQL Database. O Tempdb é usado para manter:Tempdb is used to hold:

  • Objetos de usuário temporários criados explicitamente como: índices e tabelas temporárias globais ou locais, procedimentos armazenados temporários, variáveis de tabela, Tabelas retornadas em funções com valor de tabela ou cursores.Temporary user objects that are explicitly created, such as: global or local temporary tables and indexes, temporary stored procedures, table variables, Tables returned in table-valued functions, or cursors.
  • Objetos internos criados pelo mecanismo de banco de dados.Internal objects that are created by the database engine. Eles incluem:These include:

    • Tabelas de trabalho para armazenar resultados intermediários para spools, cursores, classificações e armazenamento temporário LOB (objeto grande).Work tables to store intermediate results for spools, cursors, sorts, and temporary large object (LOB) storage.
    • Arquivos de trabalho para operações de junção de hash ou de agregação de hash.Work files for hash join or hash aggregate operations.
    • Resultados intermediários de classificação para operações como criar ou recriar índices (se SORT_IN_TEMPDB for especificado) ou determinadas consultas GROUP BY, ORDER BY ou UNION.Intermediate sort results for operations such as creating or rebuilding indexes (if SORT_IN_TEMPDB is specified), or certain GROUP BY, ORDER BY, or UNION queries.

    Observação

    Cada objeto interno usa um mínimo de nove páginas: uma página de IAM e uma extensão de oito páginas.Each internal object uses a minimum of nine pages; an IAM page and an eight-page extent. Para obter mais informações sobre páginas e extensões, consulte Páginas e extensões.For more information about pages and extents, see Pages and Extents.

    Importante

    O servidor lógico do Banco de Dados SQL do Azure dá suporte a tabelas temporárias globais e a procedimentos armazenados temporários globais armazenados no tempdb e que estão no escopo do nível do banco de dados.Azure SQL Database logical server supports global temporary tables and global temporary stored procedures that are stored in tempdb and are scoped to the database level. As tabelas temporárias globais e os procedimentos armazenados temporários globais são compartilhados para as sessões de todos os usuários no mesmo Banco de Dados SQL do Azure.Global temporary tables and global temporary stored procedures are shared for all users’ sessions within the same Azure SQL database. As sessões de usuário de outros bancos de dados SQL do Azure não podem acessar tabelas temporárias globais.User sessions from other Azure SQL databases cannot access global temporary tables. Para obter mais informações, consulte Tabelas temporárias globais no escopo do banco de dados (Banco de Dados SQL do Azure).For more information, see Database scoped global temporary tables (Azure SQL Database). A Instância Gerenciada do Banco de Dados SQL do Azure oferece suporte aos mesmos objetos temporários que o SQL Server.Azure SQL Database Managed Instance) supports the same temporary objects as does SQL Server. Para o servidor lógico do Banco de Dados SQL do Azure, apenas o banco de dados mestre e o banco de dados tempdb se aplicam.For Azure SQL Database logical server, only master Database and tempdb Database apply. Para saber o conceito de servidor lógico e banco de dados mestre lógico, confira O que é um servidor lógico do SQL Azure?.For the concept of a logical server and logical master database, see What is an Azure SQL logical server?. Para conferir uma discussão sobre o tempdb no contexto do servidor lógico do Banco de Dados SQL do Azure, confira Servidor lógico do Banco de dados tempdb no Banco de Dados SQL do Azure.For a discussion of tempdb in the context of Azure SQL Database logical server, see tempdb Database in Azure SQL Database logical server. Para a Instância Gerenciada do Banco de Dados SQL do Azure, Todos os bancos de dados do sistema se aplicam.For Azure SQL Database Managed Instance, all system databases apply.

  • Repositórios de versão, que são uma coleção de páginas de dados que contém linhas de dados necessárias para dar suporte aos recursos que usam o controle de versão de linha.Version stores, which are a collection of data pages that hold the data rows that are required to support the features that use row versioning. Existem dois armazenamentos de versão: um repositório de versão comum e um armazenamento de versão de criação de índice online.There are two version stores: a common version store and an online-index-build version store. Os armazenamentos de versão contêm:The version stores contain:

    • Versões de linha geradas por transações de modificação de dados em um banco de dados que usa a leitura de confirmados usando transações de isolação de controle de versão de linha ou isolação de instantâneo.Row versions that are generated by data modification transactions in a database that uses read-committed using row versioning isolation or snapshot isolation transactions.
    • As versões de linhas geradas por meio de transações de modificação de dados para recursos como: operações de índice on-line, vários conjuntos de resultados ativos (MARS) e gatilhos 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.

As operações no tempdb são registradas minimamente em log, para que as transações possam ser revertidas.Operations within tempdb are minimally logged so that transactions can be rolled back. tempdb é recriado cada vez que SQL ServerSQL Server é iniciado, de modo que o sistema sempre começa com uma cópia limpa do banco de dados.tempdb is re-created every time SQL ServerSQL Server is started so that the system always starts with a clean copy of the database. As tabelas temporárias e procedimentos armazenados são descartados automaticamente ou desconectados e nenhuma conexão fica ativa quando o sistema é desligado.Temporary tables and stored procedures are dropped automatically on disconnect, and no connections are active when the system is shut down. Portanto, nunca há nada em tempdb a ser gravado de uma sessão de SQL ServerSQL Server para outra.Therefore, there is never anything in tempdb to be saved from one session of SQL ServerSQL Server to another. As operações de backup e restauração não são permitidas em tempdb.Backup and restore operations are not allowed on tempdb.

Propriedades físicas do tempdb no SQL ServerPhysical Properties of tempdb in SQL Server

A tabela a seguir lista os valores de configuração iniciais dos arquivos de dados e de log do tempdb no SQL Server, que se baseiam nos padrões do Modelo de banco de dados.The following table lists the initial configuration values of the tempdb data and log files in SQL Server, which are based on the defaults for the Model database. Os tamanhos desses arquivos podem variar um pouco em diferentes edições do SQL ServerSQL Server.The sizes of these files may vary slightly for different editions of SQL ServerSQL Server.

ArquivoFile Nome lógicoLogical name Nome físicoPhysical name Tamanho inicialInitial size Aumento do arquivoFile growth
Dados primáriosPrimary data tempdevtempdev tempdb.mdftempdb.mdf 8 megabytes8 megabytes Aumento automático de 64 MB até que o disco fique cheioAutogrow by 64 MB until the disk is full
Arquivos de dados secundários*Secondary data files* temp#temp# tempdb_mssql_#.ndftempdb_mssql_#.ndf 8 megabytes8 megabytes Aumento automático de 64 MB até que o disco fique cheioAutogrow by 64 MB until the disk is full
LogLog templogtemplog templog.ldftemplog.ldf 8 megabytes8 megabytes Aumento automático de 64 megabytes até um máximo de 2 terabytesAutogrow by 64 megabytes to a maximum of 2 terabytes

* O número de arquivos depende do número de processadores (lógicos) do computador.* The number of files depends on the number of (logical) processors on the machine. Como regra geral, se o número de processadores lógicos for menor ou igual a oito, use o mesmo número de processadores lógicos para os arquivos de dados.As a general rule, if the number of logical processors is less than or equal to eight, use the same number of data files as logical processors. Se o número de processadores lógicos for maior que oito, use oito arquivos de dados e, se a contenção persistir, aumente o número de arquivos de dados em múltiplos de quatro até que a contenção seja reduzida a níveis aceitáveis ou faça alterações no código/carga de trabalho.If the number of logical processors is greater than eight, use eight data files and then if contention continues, increase the number of data files by multiples of 4 until the contention is reduced to acceptable levels or make changes to the workload/code.

Observação

O valor padrão para o número de arquivos de dados baseia-se nas diretrizes gerais de KB 2154845.The default value for the number of data files is based on the general guidelines in KB 2154845.

Movendo os arquivos de log e de dados do tempdb no SQL ServerMoving the tempdb data and log files in SQL Server

Para mover os dados e arquivos de log de tempdb , veja Mover bancos de dados do sistema.To move the tempdb data and log files, see Move System Databases.

Opções de banco de dados para o tempdb no SQL ServerDatabase Options for tempdb in SQL Server

A tabela a seguir lista o valor padrão de cada opção de banco de dados no banco de dados tempdb e se a opção pode ser modificada.The following table lists the default value for each database option in the tempdb database and whether the option can be modified. Para exibir as configurações atuais dessas opções, use a exibição de catálogo sys.databases .To view the current settings for these options, use the sys.databases catalog view.

Opção de banco de dadosDatabase option Valor padrãoDefault value Pode ser modificadoCan be modified
ALLOW_SNAPSHOT_ISOLATIONALLOW_SNAPSHOT_ISOLATION OFFOFF SimYes
ANSI_NULL_DEFAULTANSI_NULL_DEFAULT OFFOFF SimYes
ANSI_NULLSANSI_NULLS OFFOFF SimYes
ANSI_PADDINGANSI_PADDING OFFOFF SimYes
ANSI_WARNINGSANSI_WARNINGS OFFOFF SimYes
ARITHABORTARITHABORT OFFOFF SimYes
AUTO_CLOSEAUTO_CLOSE OFFOFF nãoNo
AUTO_CREATE_STATISTICSAUTO_CREATE_STATISTICS ONON SimYes
AUTO_SHRINKAUTO_SHRINK OFFOFF nãoNo
AUTO_UPDATE_STATISTICSAUTO_UPDATE_STATISTICS ONON SimYes
AUTO_UPDATE_STATISTICS_ASYNCAUTO_UPDATE_STATISTICS_ASYNC OFFOFF SimYes
CHANGE_TRACKINGCHANGE_TRACKING OFFOFF nãoNo
CONCAT_NULL_YIELDS_NULLCONCAT_NULL_YIELDS_NULL OFFOFF SimYes
CURSOR_CLOSE_ON_COMMITCURSOR_CLOSE_ON_COMMIT OFFOFF SimYes
CURSOR_DEFAULTCURSOR_DEFAULT GLOBALGLOBAL SimYes
Opções de disponibilidade de banco de dadosDatabase Availability Options ONLINEONLINE

MULTI_USERMULTI_USER

READ_WRITEREAD_WRITE
nãoNo

nãoNo

nãoNo
DATE_CORRELATION_OPTIMIZATIONDATE_CORRELATION_OPTIMIZATION OFFOFF SimYes
DB_CHAININGDB_CHAINING ONON nãoNo
ENCRYPTIONENCRYPTION OFFOFF nãoNo
MIXED_PAGE_ALLOCATIONMIXED_PAGE_ALLOCATION OFFOFF nãoNo
NUMERIC_ROUNDABORTNUMERIC_ROUNDABORT OFFOFF SimYes
PAGE_VERIFYPAGE_VERIFY CHECKSUM para novas instalações do SQL ServerSQL Server.CHECKSUM for new installations of SQL ServerSQL Server.

NONE para atualizações do SQL ServerSQL Server.NONE for upgrades of SQL ServerSQL Server.
SimYes
PARAMETERIZATIONPARAMETERIZATION SIMPLESIMPLE SimYes
QUOTED_IDENTIFIERQUOTED_IDENTIFIER OFFOFF SimYes
READ_COMMITTED_SNAPSHOTREAD_COMMITTED_SNAPSHOT OFFOFF nãoNo
RECOVERYRECOVERY SIMPLESIMPLE nãoNo
RECURSIVE_TRIGGERSRECURSIVE_TRIGGERS OFFOFF SimYes
Opções do Service BrokerService Broker Options ENABLE_BROKERENABLE_BROKER SimYes
TRUSTWORTHYTRUSTWORTHY OFFOFF nãoNo

Para obter uma descrição dessas opções de banco de dados, consulte Opções ALTER DATABASE SET (Transact-SQL).For a description of these database options, see ALTER DATABASE SET Options (Transact-SQL).

Banco de dados tempdb no Banco de Dados SQLTempdb database in SQL Database

Tamanhos de tempdb para as camadas de serviço baseadas em DTUtempdb sizes for DTU-based service tiers

SLOSLO Tamanho máximo do arquivo de dados do tempdb (MBs)Max Tempdb Data File Size (MBs) Nº de arquivos de dados do tempdb# of tempdb data files Tamanho máximo de dados do tempdb (MB)Max tempdb data size (MB)
BasicBasic 14.22514,225 11 14.22514,225
S0S0 14.22514,225 11 14.22514,225
S1S1 14.22514,225 11 14.22514,225
S2S2 14.22514,225 11 14.22514,225
S3S3 32.76832,768 11 32.76832,768
S4S4 32.76832,768 22 65.53665,536
S6S6 32.76832,768 33 98.30498,304
S7S7 32.76832,768 66 196.608196,608
S9S9 32.76832,768 1212 393.216393,216
S12S12 32.76832,768 1212 393.216393,216
P1P1 32.76832,768 1212 393.216393,216
P2P2 32.76832,768 1212 393.216393,216
P4P4 32.76832,768 1212 393.216393,216
P6P6 32.76832,768 1212 393.216393,216
P11P11 32.76832,768 1212 393.216393,216
P15P15 32.76832,768 1212 393.216393,216
Pools Elásticos Premium (todas as configurações de DTU)Premium Elastic Pools (all DTU configurations) 14.22514,225 1212 170.700170,700
Pools Elásticos Standard (todas as configurações de DTU)Standard Elastic Pools (all DTU configurations) 14.22514,225 1212 170.700170,700
Pools Elásticos Básicos (todas as configurações de DTU)Basic Elastic Pools (all DTU configurations) 14.22514,225 1212 170.700170,700

Tamanhos de tempdb para as camadas de serviço baseadas em vCoretempdb sizes for vCore-based service tiers

Consulte Limites de recursos baseados em vCoreSee vCore-based resource limits

RestrictionsRestrictions

As seguintes operações não podem ser executadas no banco de dados tempdb :The following operations cannot be performed on the tempdb database:

  • Adição de grupos de arquivosAdding filegroups.
  • Backup ou restauração de banco de dados.Backing up or restoring the database.
  • Alteração de agrupamento.Changing collation. O agrupamento padrão é o agrupamento de servidor.The default collation is the server collation.
  • Alteração do proprietário do banco de dados.Changing the database owner. tempdb pertence a sa.tempdb is owned by sa.
  • Criação de um instantâneo do banco de dadosCreating a database snapshot.
  • Descartando o banco de dados.Dropping the database.
  • Descartando o usuário convidado do banco de dados.Dropping the guest user from the database.
  • Habilitação do Change Data Capture.Enabling change data capture.
  • Participação no espelhamento de banco de dados.Participating in database mirroring.
  • Remoção do grupo de arquivos primário, arquivo de dados primário ou arquivo de log.Removing the primary filegroup, primary data file, or log file.
  • Renomeação do banco de dados ou grupo de arquivos primário.Renaming the database or primary filegroup.
  • Execução de DBCC CHECKALLOC.Running DBCC CHECKALLOC.
  • Execução de DBCC CHECKCATALOG.Running DBCC CHECKCATALOG.
  • Definindo o banco de dados como OFFLINE.Setting the database to OFFLINE.
  • Definindo o banco de dados ou grupo de arquivos primário como READ_ONLY.Setting the database or primary filegroup to READ_ONLY.

PermissõesPermissions

Qualquer usuário pode criar objetos temporários no tempdb.Any user can create temporary objects in tempdb. Os usuários podem acessar somente seus próprios objetos, a menos que recebam permissões adicionais.Users can only access their own objects, unless they receive additional permissions. É possível revogar a permissão de conexão ao tempdb para impedir um usuário de usar o tempdb, mas isso não é recomendado porque algumas operações de rotina exigem o uso do tempdb.It is possible to revoke the connect permission to tempdb to prevent a user from using tempdb, but is not recommended as some routine operations require the use of tempdb.

Otimizando o desempenho do tempdb no SQL ServerOptimizing tempdb performance in SQL Server

O tamanho e o posicionamento físico do banco de dados tempdb podem afetar o desempenho de um sistema.The size and physical placement of the tempdb database can affect the performance of a system. Por exemplo, se o tamanho definido para tempdb for muito pequeno, parte da carga de processamento do sistema poderá ser elevada com o crescimento automático de tempdb para o tamanho necessário para oferecer suporte à carga de trabalho toda vez que você reiniciar a instância do SQL ServerSQL Server.For example, if the size that is defined for tempdb is too small, part of the system-processing load may be taken up with autogrowing tempdb to the size required to support the workload every time you restart the instance of SQL ServerSQL Server.

Se possível, use a inicialização instantânea de arquivo do banco de dados para melhorar o desempenho das operações de crescimento de arquivo de dados.If possible, use database instant file initialization to improve the performance of data file grow operations.

Aloque espaço antecipadamente para todos os arquivos do tempdb definindo o tamanho de arquivo com um valor grande o bastante para acomodar a carga de trabalho comum no ambiente.Preallocate space for all tempdb files by setting the file size to a value large enough to accommodate the typical workload in the environment. A pré-alocação impede que o tempdb seja expandido muito frequentemente, o que afeta o desempenho.Preallocation prevents tempdb from expanding too frequently, which affects performance. O banco de dados tempdb deve ser definido como crescimento automático, mas isso deve ser usado para aumentar o espaço em disco para exceções não planejadas.The tempdb database should be set to autogrow, but this should be used to increase disk space for unplanned exceptions.

Os arquivos de dados devem ser de tamanho igual em cada grupo de arquivos, pois o SQL ServerSQL Server usa um algoritmo de preenchimento proporcional que favorece alocações em arquivos com mais espaço livre.Data files should be of equal size within each filegroup, as SQL ServerSQL Server uses a proportional-fill algorithm that favors allocations in files with more free space. A divisão do tempdb em vários arquivos de dados de tamanho igual fornece um alto grau de eficiência paralela em operações que usam o tempdb.Dividing tempdb into multiple data files of equal size provides a high degree of parallel efficiency in operations that use tempdb.

Defina o incremento de crescimento do arquivo com um tamanho razoável para evitar que os arquivos do banco de dados tempdb cresçam com um valor muito pequeno.Set the file growth increment to a reasonable size to avoid the tempdb database files from growing by too small a value. Se o aumento do arquivo for muito pequeno, comparado à quantidade de dados que está sendo gravada no tempdb, talvez o tempdb precise se expandir constantemente e afetar o desempenho.If the file growth is too small, compared to the amount of data that is being written to tempdb, tempdb may have to constantly expand and affect performance.

Para verificar o tamanho atual do tempdb e os parâmetros de crescimento, use a seguinte consulta:To check current tempdb size and growth parameters, use the following query:

SELECT name AS FileName, 
   size*1.0/128 AS FileSizeinMB,
   CASE max_size 
       WHEN 0 THEN 'Autogrowth is off.'
       WHEN -1 THEN 'Autogrowth is on.'
       ELSE 'Log file grows to a maximum size of 2 TB.'
   END,
   growth AS 'GrowthValue',
   'GrowthIncrement' = 
       CASE
           WHEN growth = 0 THEN 'Size is fixed.'
           WHEN growth > 0 AND is_percent_growth = 0 
               THEN 'Growth value is in 8-KB pages.'
           ELSE 'Growth value is a percentage.'
       END
FROM tempdb.sys.database_files;
GO

Coloque o banco de dados tempdb em um subsistema de E/S rápido.Put the tempdb database on a fast I/O subsystem. Use a distribuição de disco se houver muitos discos anexados diretamente.Use disk striping if there are many directly attached disks. Arquivos de dados individuais ou grupos de arquivos de dados do tempdb não precisam necessariamente estar em discos ou eixos diferentes, a menos que você também esteja tendo gargalos de E/S.Individual or groups of tempdb data files do not necessarily need to be on different disks or spindles unless you are also encountering I/O bottlenecks.

Coloque o banco de dados tempdb em discos diferentes dos usados por bancos de dados de usuários.Put the tempdb database on disks that differ from those that are used by user databases.

Melhorias de desempenho no tempdb para o SQL ServerPerformance improvements in tempdb for SQL Server

A partir do SQL Server 2016 (13.x)SQL Server 2016 (13.x), o desempenho do tempdb é ainda mais otimizado das seguintes maneiras:Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), tempdb performance is further optimized in the following ways:

  • As tabelas temporárias e variáveis de tabela são armazenadas em cache.Temporary tables and table variables are cached. O armazenamento em cache permite que as operações de descarte e criação de objetos temporários sejam executadas rapidamente e reduz a contenção de alocação de página.Caching allows operations that drop and create the temporary objects to execute very quickly and reduces page allocation contention.
  • O protocolo de travamento da página de alocação foi aprimorado para reduzir o número de travas (atualização) de UP utilizadas.Allocation page latching protocol is improved to reduce the number of UP (update) latches that are used.
  • A sobrecarga de log para o tempdb foi reduzida para diminuir o consumo de largura de banda de E/S de disco no arquivo de log do tempdb.Logging overhead for tempdb is reduced to reduce disk I/O bandwidth consumption on the tempdb log file.
  • A Instalação adiciona vários arquivos de dados tempdb durante uma nova instalação da instância.Setup adds multiple tempdb data files during a new instance installation. Essa tarefa pode ser realizada com o novo controle de entrada da interface do usuário na seção Configuração do Mecanismo de Banco de Dados e em um parâmetro de linha de 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. Por padrão, a instalação adiciona um número de arquivos de dados do tempdb equivalente à contagem de processadores lógicos ou a oito, o que for menor.By default, setup adds as many tempdb data files as the logical processor count or eight, whichever is lower.
  • Quando houver vários arquivos de dados do tempdb, todos os arquivos aumentarão automaticamente ao mesmo tempo e na mesma quantidade, dependendo das configurações de aumento.When there are multiple tempdb data files, all files autogrow at same time and by the same amount depending on growth settings. O sinalizador de rastreamento 1117 já não é necessário.Trace flag 1117 is no longer required.
  • Além disso, todas as alocações em tempdb usam extensões uniformes.All allocations in tempdb use uniform extents. O sinalizador de rastreamento 1118 não é mais necessário.Trace flag 1118 is no longer required.
  • Para o grupo de arquivos primário, a propriedade AUTOGROW_ALL_FILES está ativada e não pode ser modificada.For the primary filegroup, the AUTOGROW_ALL_FILES property is turned on and the property cannot be modified.

Planejamento da capacidade para o tempdb no SQL ServerCapacity Planning for tempdb in SQL Server

A determinação do tamanho apropriado para o tempdb em um ambiente de produção do SQL Server depende de muitos fatores.Determining the appropriate size for tempdb in a SQL Server production environment depends on many factors. Conforme descrito anteriormente neste artigo, esses fatores incluem a carga de trabalho existente e os recursos do SQL ServerSQL Server utilizados.As described previously in this article, these factors include the existing workload and the SQL ServerSQL Server features that are used. Recomendamos que você analise a carga de trabalho existente executando as seguintes tarefas em um ambiente de teste do SQL Server:We recommend that you analyze the existing workload by performing the following tasks in a SQL Server test environment:

  • Defina o crescimento automático como ativado para o tempdb.Set autogrow on for tempdb.
  • Execute consultas individuais ou arquivos de rastreamento de carga de trabalho e monitore o uso de espaço do tempdb.Execute individual queries or workload trace files and monitor tempdb space use.
  • Execute operações de manutenção de índice, como recriação de índices e monitore o espaço do tempdb.Execute index maintenance operations, such as rebuilding indexes and monitor tempdb space.
  • Use os valores de uso de espaço das etapas anteriores para prever o uso total da carga de trabalho; ajuste esse valor para atividades simultâneas projetadas e, em seguida, defina o tamanho do tempdb de acordo.Use the space-use values from the previous steps to predict your total workload usage; adjust this value for projected concurrent activity, and then set the size of tempdb accordingly.

Como monitorar o uso do tempdbHow to Monitor tempdb use

O espaço em disco insuficiente no tempdb pode causar interrupções significativas no ambiente de produção do SQL ServerSQL Server e impedir que aplicativos que estão em execução concluam as operações.Running out of disk space in tempdb can cause significant disruptions in the SQL ServerSQL Server production environment and can prevent applications that are running from completing operations. Use a exibição de gerenciamento dinâmico sys.dm_db_file_space_usage para monitorar o espaço em disco utilizado nos arquivos do tempdb:You can use the sys.dm_db_file_space_usage dynamic management view to monitor the disk space that is used in the tempdb files:

-- Determining the Amount of Free Space in tempdb
SELECT SUM(unallocated_extent_page_count) AS [free pages], 
 (SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount Space Used by the Version Store
SELECT SUM(version_store_reserved_page_count) AS [version store pages used],
 (SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by Internal Objects
SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],
 (SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by User Objects
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],
 (SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

Além disso, para monitorar a atividade de alocação ou desalocação de página no tempdb em nível de sessão ou tarefa, use as exibições de gerenciamento dinâmico sys.dm_db_session_space_usage e sys.dm_db_task_space_usage.Additionally, to monitor the page allocation or deallocation activity in tempdb at the session or task level, you can use the sys.dm_db_session_space_usage and sys.dm_db_task_space_usage dynamic management views. Essas exibições podem ser usadas para identificar consultas grandes, tabelas temporárias ou variáveis de tabela que estão utilizando muito espaço em disco do tempdb.These views can be used to identify large queries, temporary tables, or table variables that are using lots of tempdb disk space. Também existem vários contadores que podem ser usados para monitorar o espaço livre disponível no tempdb e também os recursos que estão usando o tempdb.There are also several counters that can be used to monitor the free space that is available in tempdb and also the resources that are using tempdb. Para obter mais informações, consulte a próxima seção.For more information, see the next section.

-- Obtaining the space consumed by internal objects in all currently running tasks in each session
SELECT session_id, 
 SUM(internal_objects_alloc_page_count) AS task_internal_objects_alloc_page_count,
 SUM(internal_objects_dealloc_page_count) AS task_internal_objects_dealloc_page_count 
FROM sys.dm_db_task_space_usage 
GROUP BY session_id;
-- Obtaining the space consumed by internal objects in the current session for both running and completed tasks
SELECT R2.session_id,
 R1.internal_objects_alloc_page_count 
 + SUM(R2.internal_objects_alloc_page_count) AS session_internal_objects_alloc_page_count,
 R1.internal_objects_dealloc_page_count 
 + SUM(R2.internal_objects_dealloc_page_count) AS session_internal_objects_dealloc_page_count
FROM sys.dm_db_session_space_usage AS R1 
INNER JOIN sys.dm_db_task_space_usage AS R2 ON R1.session_id = R2.session_id
GROUP BY R2.session_id, R1.internal_objects_alloc_page_count, 
 R1.internal_objects_dealloc_page_count;;

Opção SORT_IN_TEMPDB para índicesSORT_IN_TEMPDB Option For Indexes
Bancos de dados do sistemaSystem Databases
sys.databases (Transact-SQL)sys.databases (Transact-SQL)
sys.master_files (Transact-SQL)sys.master_files (Transact-SQL)
Mover arquivos de banco de dadosMove Database Files

Consulte TambémSee Also

Trabalhando com tempdb no SQL Server 2005Working with tempdb in SQL Server 2005
Solução de problemas de espaço em disco insuficiente no tempdbTroubleshooting Insufficient Disk Space in tempdb