Remarque: ce message peut également être utile:
Les problèmes avec le fichier mdf TempDB ne cessent d'augmenter
À moins que vous puissiez comprendre quel processus utilise cette table de travail (et peut le tuer en toute sécurité), je serais d'accord avec ce que vos recherches ont déjà produit: faites un cycle sur le serveur et vous devriez pouvoir réduire tempdb.
Une autre question a trait à la détermination de cela pour les tables #temp; Je ne sais pas s'il peut être adapté aux tables de travail:
Rechercher quelle session contient quelle table temporaire
J'ai également blogué à ce sujet (encore une fois, pour les tables #temp):
http://sqlperformance.com/2014/05/t-sql-queries/dude-who-owns-that-temp-table
Je doute que la table de travail soit liée au magasin d'isolement / version d'instantané, mais juste au cas où:
Rechercher les transactions qui remplissent le magasin de versions
Ne vous fiez pas non plus à DBCC OPENTRAN;
- j'ai observé de nombreux scénarios où je sais que j'ai une transaction active mais qu'elle n'apparaît pas là-bas. Et notez que le contexte de la base de données est important; la base de données où la transaction est active n'est pas nécessairement tempdb. Que voyez-vous ici? N'importe quoi?
SELECT * FROM sys.dm_tran_active_transactions
WHERE name = N'worktable';
Une fois que vous avez réduit tempdb
Bien sûr, ce n'est pas une solution permanente. Vous allez réduire tempdb, puis ça va encore augmenter. Cela peut devenir très ennuyeux et fastidieux de jouer à ce jeu chaque fois que cela se produit. Et si ça va encore grandir, qu'allez-vous faire avec cet espace libre en attendant? Louez-le et puis expulser les gens quand tempdb en a encore besoin? Vous devez soit:
- Corrigez le processus qui fait que tempdb grandit anormalement en premier lieu.
- Allouez suffisamment d'espace pour tempdb afin qu'il n'ait pas besoin de croître, et arrêtez de le réduire (surtout si ce n'est que temporairement; c'est juste du travail gaspillé!).
Quelques autres suggestions:
- N'utilisez pas
SHRINKDATABASE
(qui devrait être appelé auto-fragment) ou l'interface utilisateur. Écrivez des SHRINKFILE
commandes spécifiques et ciblées pour affecter des fichiers individuels.
- Envisagez d'utiliser plusieurs fichiers pour tempdb (que vous pourriez répartir sur un stockage différent si / lorsque cela est possible), et envisagez les indicateurs de trace 1117 (tant que ce comportement n'affectera pas également vos bases de données utilisateur) et 1118.
- Quelques conseils pour minimiser l'utilisation de tempdb ici: