Skip to content

REPORTE DE TABLAS DE TEMPDB EN SQL SERVER

Seguramente ya viste el artículo previo de generación de reporte de tablas en las Bases de Datos de usuario. Ahora bien, ¿cómo podemos obtener un listado de objetos temporales? En este artículo quiero mostrarte cómo generar un reporte de tablas de tempdb considerando su característica de ser una base de datos de sistema.

Para empezar quiero quitarte el mito que nos dice que las tablas temporales sólo se encuentran en memoria. Evidentemente las tablas temporales tienen un comportamiento diferente, ya que no se encuentran en una base de datos de usuario, pero, es importante que consideres que al ser parte de la base de datos tempdb, ocuparán un espacio físico en la unidad donde ella esté instalada.

REPORTE DE TABLAS DE TEMPDB

De la misma manera que en la generación de un reporte de tablas de las bases de datos de usuario, consultamos diferentes vistas de sistema apuntando a la base tempdb. Mantendremos el mismo formato que el reporte anterior para mantener abierta la posibilidad de un trabajo conjunto.

Tienes a continuación el código necesario para la obtención del reporte. Solo tienes que copiarlo y ejecutarlo. Está listo para referenciar al contenido de la tempdb.

SELECT
	'TEMPDB TABLES' AS [REPORT],
	@@SERVERNAME AS [ServerName],
	'tempdb' AS [DatabaseName],
	[tab].[name] AS [ObjectName],
	[tab].[create_date] AS [CreateDate],
	[tab].[modify_date] AS [ModifyDate],
	[dbps].[row_count] AS [RowCount],
	[dbps].[reserved_page_count] * 8 AS [TotalSpaceKB],
	[dbps].[used_page_count] * 8 AS [UsedSpaceKB],
	([dbps].[reserved_page_count] - [dbps].[used_page_count]) * 8 AS UnusedSpaceKB
FROM [tempdb].[sys].[partitions] AS [par] 
INNER JOIN [tempdb].[sys].[dm_db_partition_stats] AS [dbps]
	ON [par].partition_id = [dbps].partition_id 
	AND [par].[partition_number] = [dbps].[partition_number]
INNER JOIN [tempdb].[sys].[tables] AS [tab] 
	ON [dbps].object_id = [tab].object_id 
ORDER BY [tab].name;

Ejecuta desde un Procedimiento Almacenado y será más sencillo su llamado o hasta su configuración en una tarea programada. Tienes en este enlace la referencia al Github con la creación de un SP.

reporte-tablas-tempdb

SIEMPRE ALERTA DE LOS CAMBIOS

Puedes generar estos reportes de manera periódica para tener en mente las maneras en las que tus servidores se comportan en el tiempo.

Uno de los principales inconvenientes de no tener este seguimiento es la aparición de errores de falta de espacio ya sea en datafiles de datos o de logs. Por esta razón la importancia.

Para ayudarte en una estimación de almacenamiento requerido, puedes utilizar una relación entre cantidad de filas y tamaño fisico ocupado de una tabla. Calcula con ella las necesidades futuras de un crecimiento que también podrá ser estimado en el tiempo.

Con la base de datos tempdb debes ser más cuidadoso ya que la información generada en el reporte es muy problable que siempre sea diferente ya que las tablas no son permanentes en el tiempo. Para esto, escoge bien el momento en que capturas los datos.

No te olvides nunca que también debes involucrar a las personas encargadas del almacenamiento o administración de storage. Ellas deben estar muy al pendiente de los informes que se generan con las bases de datos. Un trabajo en equipo siempre será más beneficioso para todos. Sobretodo para evitar problemas de discos llenos.

Y por supuesto, no te olvides de las Buenas Prácticas en Tempdb.

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Carrito
Volver arriba