Como mover la tempdb de sql server

Mover Tempdb de SQL Server de forma segura

Mover tempdb de SQL Server, a otra unidad o carpeta es una práctica recomendada para mejorar el rendimiento o liberar espacio en disco. Sin embargo, hacerlo incorrectamente puede impedir que SQL Server arranque. En esta guía completa te explico cómo hacerlo paso a paso y qué errores evitar.

🔍 ¿Qué es tempdb?

tempdb es una base de datos temporal que usa SQL Server internamente para muchas operaciones. Se recrea automáticamente cada vez que se reinicia el servidor, y su contenido no es persistente.

🧩 ¿Para qué se utiliza?

SQL Server utiliza tempdb para:

  • Consultas que usan ordenamientos, joins o subconsultas complejas.
  • Operaciones de ordenamiento y agrupación (ORDER BY, GROUP BY).
  • Manejo de versiones de filas para transacciones con Snapshot Isolation.
  • Almacenamiento de tablas temporales (#Temp, ##Temp).
  • Indexación temporal y objetos internos.

⚠️ ¿Por qué es importante?

Debido a su uso intensivo, tempdb puede convertirse en un cuello de botella en sistemas con alta carga. Tener tempdb en un disco rápido o separado del sistema ayuda a:

  • Evitar problemas de rendimiento.
  • Reducir la fragmentación de disco.
  • Aislar el impacto de operaciones pesadas.

📌 ¿Por qué mover tempdb?

La base tempdb es temporal, se recrea cada vez que se reinicia el servidor, pero puede crecer rápidamente según las operaciones que se ejecuten en SQL Server. Moverla a un disco más rápido o separado puede:

  • Mejorar el rendimiento de consultas temporales.
  • Prevenir cuellos de botella en el disco del sistema.
  • Facilitar la administración del almacenamiento.

🛠️ Pasos para mover tempdb

1. Verifica los nombres lógicos de los archivos

Antes de hacer cualquier cambio, ejecuta esta consulta para confirmar los nombres lógicos actuales:

SELECT name, physical_name  
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

Normalmente los nombres son tempdev (archivo de datos) y templog (archivo de log).

2. Ejecuta el script para modificar la ubicación

Modifica la ruta según tus necesidades. Por ejemplo:

USE master;
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLDATA\MSSQL\Data\tempdb.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLDATA\MSSQL\Data\templog.ldf');
GO

3. Asegura que la carpeta de destino exista

Verifica que E:\SQLDATA\MSSQL\Data\ exista. Si no, créala manualmente antes de reiniciar el servicio.

4. Da permisos a la cuenta de servicio de SQL Server

SQL Server necesita permisos para crear los archivos en la nueva ubicación.

¿Cómo saber qué cuenta de servicio usa SQL Server?

Puedes consultarlo con esta query:

SELECT servicename, service_account  
FROM sys.dm_server_services;

Luego:

  1. Ve a la carpeta de destino (E:\SQLDATA\MSSQL\Data\)
  2. Haz clic derecho → Propiedades → Seguridad.
  3. Agrega la cuenta de servicio (ej. NT Service\MSSQLSERVER)
  4. Otórgale permisos de lectura, escritura y modificación.

5. Reinicia el servicio de SQL Server

Una vez que hayas hecho los cambios, reinicia el servicio para que tempdb se cree en la nueva ubicación.

Puedes hacerlo desde services.msc, SQL Server Configuration Manager o PowerShell:

Restart-Service -Name 'MSSQLSERVER'

⚠️ Error común: “Access is denied” (Error 5123)

Uno de los errores más comunes al reiniciar después de mover tempdb es:

Error 5123: Operating system error 5 (Access is denied)

Este error indica que SQL Server no tiene permisos para acceder o crear los archivos. La solución es:

  • Verificar que la carpeta de destino exista.
  • Dar permisos a la cuenta de servicio de SQL Server (como se explicó arriba).
  • Asegurarte de que el archivo no esté bloqueado por antivirus u otro proceso.

✅ Confirmar que el cambio fue exitoso

Una vez reiniciado el servicio, ejecuta nuevamente:

SELECT name, physical_name  
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

Verifica que la nueva ruta sea la que especificaste.

🧼 Limpieza (opcional)

Si todo funciona correctamente, puedes eliminar los antiguos archivos de tempdb que quedaron en la ubicación anterior (normalmente C:\Program Files\Microsoft SQL Server\...), ya que no se usarán más.

🧠 Conclusión

Mover tempdb es una operación sencilla pero sensible. Asegúrate de:

  • Verificar los nombres lógicos.
  • Crear las carpetas necesarias.
  • Dar los permisos correctos.
  • Reiniciar el servicio con precaución.

Con estos pasos, tendrás una instalación más optimizada y lista para manejar cargas de trabajo temporales de forma eficiente.

Cuentos de miedo para Informáticos: Historias de terror para informáticos

EXEC sp_change_users_login SQL SERVER

Insertar Varias Filas en SQL Server: Simplifica tu Trabajo

dm_exec_requests en SQL Server

Entendiendo Kerberos en SQL Server: Seguridad y Autenticación

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.