Seu tempdb esta ficando muito, mais muito grande.
Botão direito no tempdb ==> propriedades ==> Files ==> clique em cima do Initial Size e coloque o espaço que deseja.
Pode falar eita dificuldade.
E tem gente que fica perdido nessa. Acreditem....
Agora se não der certo vamos para o método grosseiro de ser :
Diminui para um tamanho especifico:
--- **** INICIO Copie e cole este código no Manager Studio
USE TEMPDB
GO
SP_HELPDB TEMPDB
GO
DBCC SHRINKFILE (tempdev, 30)
GO
DBCC SHRINKFILE (templog, 5)
GO
SP_HELPDB TEMPDB
-- O 30 informa ao tempdb ficar com 30MB.
-- Lembrando que devemos diminuir também o arquivo de log, assim...
-- O 5 informa o log do tempdb deve ficar com 5MB.
--- **** FIM VISUALIZE O RESULTADO COM O COMANDO SP_HELPDB TEMPDB
Podemos fazer por porcentagem também
--- **** INICIO Copie e cole este código no Manager Studio
DBCC SHRINKDATABASE (tempdb, 10)
--- **** FIM VISUALIZE O RESULTADO COM O COMANDO SP_HELPDB TEMPDB
Eita mas sempre que voce roda algumas operações pesada tipo um delete big power.
Então vamos ser grosseiros.
Limpa o cache de procedimento ==> DBCC FREEPROCCACHE;
Operação é semelhante a FREEPROCCACHE, exceto que afeta outros tipos de caches ==> DBCC FREESYSTEMCACHE ('ALL');
Limpa o cache de conexão de consulta distribuída. ==> DBCC FREESESSIONCACHE;
Apelação total :
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
SE NADA DER CERTO PARTA PARA O RADICAL
Reinicie o serviço do SQLServer:
Clique com o botão direito do mouse em "SQL Server" no SQL Server Configuration Manager e clique em Restart ou Reiniciar.
Atualização :
-- Define o limite mínimo de páginas alocadas no tempdb para considerar uma sessão "abusiva"
-- 128 páginas = 1 MB
DECLARE @limite_paginas INT = 128; -- Altere conforme necessário
-- Tabela temporária para armazenar sessões que excedem o limite
IF OBJECT_ID('tempdb..#SessoesAbusivas') IS NOT NULL
DROP TABLE #SessoesAbusivas;
CREATE TABLE #SessoesAbusivas (
session_id INT,
total_paginas INT,
sql_text NVARCHAR(MAX),
status NVARCHAR(30),
command NVARCHAR(50)
);
-- Popula a tabela com sessões abusivas
INSERT INTO #SessoesAbusivas (session_id, total_paginas, sql_text, status, command)
SELECT
s.session_id,
(u.user_objects_alloc_page_count + u.internal_objects_alloc_page_count) AS total_paginas,
t.text AS sql_text,
r.status,
r.command
FROM
sys.dm_db_session_space_usage u
JOIN sys.dm_exec_sessions s ON u.session_id = s.session_id
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE
(u.user_objects_alloc_page_count + u.internal_objects_alloc_page_count) >= @limite_paginas
AND s.is_user_process = 1
AND s.session_id <> @@SPID; -- Não mata a própria sessão
-- Verifica e mata as sessões identificadas
DECLARE @sid INT;
DECLARE cur CURSOR FOR SELECT session_id FROM #SessoesAbusivas;
OPEN cur;
FETCH NEXT FROM cur INTO @sid;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Encerrando sessão: ' + CAST(@sid AS VARCHAR);
BEGIN TRY
EXEC ('KILL ' + @sid);
END TRY
BEGIN CATCH
PRINT 'Erro ao encerrar sessão ' + CAST(@sid AS VARCHAR) + ': ' + ERROR_MESSAGE();
END CATCH;
FETCH NEXT FROM cur INTO @sid;
END
CLOSE cur;
DEALLOCATE cur;
-- Exibe o log das sessões que foram encerradas
SELECT * FROM #SessoesAbusivas;
-- Limpeza
DROP TABLE #SessoesAbusivas;