Saltar al contenido

Mover y crear nuevos archivos tempdb de forma segura

Luego de consultar con expertos en la materia, programadores de varias áreas y maestros dimos con la solución al problema y la plasmamos en esta publicación.

Solución:

Para mover tempdb archivos, simplemente necesita hacer lo siguiente:

alter database tempdb
modify file
(
    name = tempdev,
    filename = 'C:YourNewTempdbDirtempdb.mdf'
)
go

alter database tempdb
modify file
(
    name = templog,
    filename = 'C:YourNewTempdbDirtemplog.ldf'
)
go

Si desea agregar un nuevo archivo a tempdbsimplemente debe hacer lo siguiente (siempre que desee agregarlo a la PRIMARY grupo de archivos, o cree uno propio):

alter database tempdb
add file
(
    name = tempdb2,
    filename = 'C:YourNewTempdbDirTempdb2.ndf'
)
go

Para que estos cambios surtan efecto, deberá reiniciar el servicio de SQL Server. Asi que en lo que respecta a minimizar el tiempo de inactividad, está limitado por la cantidad de tiempo que llevará el reinicio del servicio. No tienes que preocuparte por mover los preexistentes tempdb archivos de base de datos, ya que SQL Server siempre recrea los archivos y las nuevas ubicaciones/archivos se crearán al iniciar el servicio.

En cuanto al “archivo de datos 1 tempdb por núcleo”, eso es en gran medida un mito. El enfoque correcto es monitorear tempdb contención de archivos para las páginas de espacio libre de página (PFS), mapa de asignación global (GAM) y mapa de asignación global compartido (SGAM). Consulte este artículo para obtener una consulta (enlace alternativo) que busca a través de la sys.dm_os_waiting_tasks DMV para ver cuánto tempdb archivo de contención que hay. Entonces tienes que salir de esto, en lugar de simplemente cubrirte. tempdb con la misma cantidad de archivos que núcleos. Es el enfoque más recomendable.

  1. Para mover tempdb, ejecute:

    ALTER DATABASE tempdb 
    MODIFY FILE ( name=tempdev, filename='D:Newpathtempdb.mdf') 
    GO
    ALTER DATABASE tempdb 
    MODIFY FILE ( name=templog, filename='D:Newpathtemplog.ldf') 
    GO
    

    Luego reinicie su servicio de SQL Server (MSSQLServer).

  2. Número de archivos en tempdb: consulte el artículo de Paul Randall: Un mito de DBA de SQL Server por día: (12/30) tempdb siempre debe tener un archivo de datos por núcleo de procesador

Del consejo de Microsoft:

Como regla general, si el número de procesadores lógicos es menor o igual a 8, utilice el mismo número de archivos de datos que procesadores lógicos.

Si la cantidad de procesadores lógicos es superior a 8, use 8 archivos de datos y luego, si la contienda continúa, aumente la cantidad de archivos de datos en múltiplos de 4 (hasta la cantidad de procesadores lógicos) hasta que la contienda se reduzca a niveles aceptables o haga cambios en la carga de trabajo/código.

Mover los archivos TempDB es un proceso de 2 pasos:

  1. Dile a SQL donde donde desea que vayan sus nuevos archivos TempDB (esto no tiene tiempo de inactividad)
  2. Reiniciar la SQL Server servicio para que el cambio surta efecto (este es el tiempo de inactividad mínimo necesitas)

Para decirle a SQL dónde crear los nuevos archivos TempDB, puede usar:

DECLARE @newDriveAndFolder VARCHAR(8000);

SET @newDriveAndFolder = 'Z:YourTempDBfolder';

SELECT [name] AS [Logical Name]
    ,physical_name AS [Current Location]
    ,state_desc AS [Status]
    ,size / 128 AS [Size(MB)] --Number of 8KB pages / 128 = MB
    ,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
    + CHAR(9) /* Tab */
    + ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
    + CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END  + ''''
    + ');'
    AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];

Esto generará las declaraciones T-SQL que necesita ejecutar para mover los archivos al nuevo drive:folder usted quiere. (click en la imagen para agrandar)

Imagen que muestra 2 filas con detalles sobre archivos TempDB y declaraciones T-SQL para moverlos

Cuando haya ejecutado sus declaraciones de movimiento, puede ejecutar la consulta anterior nuevamente, para verificar que el Current Location columna ahora muestra su nuevo drive:folder.

Imagen que muestra las nuevas ubicaciones de los archivos TempDB

Una vez que esté satisfecho con los cambios, reiniciar el servicio de SQL Server.

Calificaciones y comentarios

Finalizando este artículo puedes encontrar las críticas de otros gestores de proyectos, tú además tienes la habilidad mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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