Nota: esta postagem também pode ser útil:
Problemas com o arquivo mdf TempDB cada vez maior
A menos que você possa descobrir qual processo está usando essa tabela de trabalho (e pode matá-la com segurança), eu teria que concordar com o que suas pesquisas já produziram: alterne o servidor e você poderá reduzir o tempdb.
Uma pergunta diferente tratou de descobrir isso nas tabelas #temp; Não sei se ele pode ser adaptado para mesas de trabalho:
Encontre qual sessão está mantendo qual tabela temporária
Também escrevi em blog (novamente, para #temp tables):
http://sqlperformance.com/2014/05/t-sql-queries/dude-who-owns-that-temp-table
Duvido que a tabela de trabalho esteja relacionada ao armazenamento de isolamento / versão de instantâneo, mas apenas no caso de:
Encontre transações que estão preenchendo o armazenamento de versão
Além disso, não confie DBCC OPENTRAN;
- observei muitos cenários em que sei que tenho uma transação ativa, mas ela não aparece lá. E observe que o contexto do banco de dados é importante; o banco de dados em que a transação está ativa não é necessariamente tempdb. O que você vê aqui? Qualquer coisa?
SELECT * FROM sys.dm_tran_active_transactions
WHERE name = N'worktable';
Depois de reduzir o tempdb
Obviamente, essa não é uma solução permanente. Você vai encolher o tempdb e depois crescerá novamente. Isso pode se tornar muito chato e entediante para jogar este jogo toda vez que isso acontece. E se ele crescer novamente, o que você fará com esse espaço livre nesse meio tempo? Alugue e despeje as pessoas quando o tempdb precisar dele novamente? Você precisa:
- Corrija o processo que está fazendo o tempdb crescer anormalmente grande em primeiro lugar.
- Aloque espaço suficiente para o tempdb para que ele não precise crescer e pare de reduzi-lo (especialmente se apenas temporariamente; isso é apenas desperdício de trabalho!).
Algumas outras sugestões:
- Não use
SHRINKDATABASE
(que deve ser chamado de fragmento automático) ou a interface do usuário. Escreva SHRINKFILE
comandos específicos e direcionados para afetar arquivos individuais.
- Considere usar vários arquivos para tempdb (que você pode espalhar para armazenamento diferente, se / quando possível) e considere sinalizadores de rastreamento 1117 (desde que esse comportamento não afete também os bancos de dados do usuário) e 1118.
- Algumas dicas sobre como minimizar a utilização do tempdb aqui: