Cómo Listar las Tablas en SQL Server?

Para auditar una base de datos MSSQL y sus tablas, es común querer la lista de tablas en forma de tabla o una hoja de Excel. Esta consulta SQL permite listar todas las tablas en una base de datos de SQL Server y mostrar el número de filas y el tamaño de cada tabla. Los desarrolladores de SQL Server también buscan a menudo tablas, por ejemplo, para análisis de impacto. Por lo tanto, es muy útil listar rápidamente todas las tablas para una auditoría, ya sea técnica o funcional. Para empezar, estas tres diferentes consultas T-SQL permiten mostrar la información de diferentes maneras, y con diferentes niveles de detalles.

  1. La primera es una simple lista de tablas.
  2. La segunda consulta muestra información útil como la columna object_id, create_date y modify_date.
  3. La tercera consulta muestra el esquema, el número de filas y el espacio en disco utilizado por cada tabla.

De hecho, las tablas y vistas del sistema de SQL Server contienen metadatos útiles que describen los diferentes objetos en la base de datos, incluidas las tablas, por supuesto. Así, todas las soluciones presentadas en este artículo utilizan tablas o vistas del sistema, tales como:

  • information_schema.tables
  • sys.tables
  • sys.indexes
  • sys.partitions
  • sys.allocation_units
  • o sys.schemas

1. Mostrar el nombre de todas las tablas de SQL Server con una consulta

En SQL Server, information_schema.table es una vista, no una tabla. Es una de las vistas INFORMATION_SCHEMA estandarizadas por ISO para los sistemas de gestión de bases de datos relacionales (RDBMS). Esta vista proporciona información sobre las tablas y vistas presentes en una base de datos. Puedes consultarla para obtener metadatos sobre estas tablas y vistas, como sus nombres, tipos (tabla o vista) y otros detalles. Por ejemplo, puedes utilizar la tabla del sistema information_schema.table, así:

SELECT *
FROM   information_schema.tables
WHERE  table_type='BASE TABLE';
Consulta para obtener la lista de todas las tablas en SQL Server
Consulta para obtener la lista de todas las tablas en SQL Server

2. Consulta para obtener la lista de tablas de SQL Server usando la vista sys.tables

También puedes usar la tabla del sistema sys.tables. El resultado de la consulta muestra que el tipo de tabla almacenado en la columna [type_desc] es USER_TABLE. Sys.tables en Transact-SQL también es una vista del sistema y no una tabla. Es parte del catálogo del sistema de SQL Server y proporciona información sobre todas las tablas de usuarios y tablas del sistema que existen en la base de datos actual. Se puede usar para recuperar varios detalles y metadatos sobre las tablas, como su nombre, fecha de creación, fecha de modificación, etc. Aunque se puede consultar como una tabla, no se debe tratar como una tabla de usuario editable. En cambio, es una vista estructurada que presenta ciertos metadatos del sistema sobre las tablas.

SELECT *
FROM   sys.tables;

3. Mostrar la lista de nombres y tamaños de tablas en T-SQL

La tercera es utilizar múltiples tablas del sistema de SQL Server como sys.tables, sys.indexes, sys.partitions, sys.allocation_units y sys.schemas. Estas tablas son útiles para mostrar la lista de tablas. También se utilizan para mostrar el número de filas en cada tabla y el espacio en disco utilizado. Por ejemplo, esta consulta muestra todas las tablas con su número de filas ordenado en orden descendente. Esta consulta es útil para encontrar el tamaño de las tablas más grandes en una base de datos de SQL Server.

SELECT
sch.name AS SCHEMANAME,
tab.name AS TABLENAME,
par.rows AS ROWCOUNTS,
SUM(alc.total_pages) * 8 AS TOTAL_SPACE,
SUM(alc.used_pages) * 8 AS USED_SPACE,
(SUM(alc.total_pages) - SUM(alc.used_pages)) * 8 AS UNUSED_SPACE
FROM sys.tables tabSELECT
	sch.name AS SCHEMANAME,
	tab.name AS TABLENAME,
	par.rows AS ROWCOUNTS,
	SUM(alc.total_pages) * 8 AS TOTAL_SPACE,
	SUM(alc.used_pages) * 8 AS USED_SPACE,
	(SUM(alc.total_pages) - SUM(alc.used_pages)) * 8 AS UNUSED_SPACE
FROM sys.tables tab
	INNER JOIN sys.indexes ind
		ON tab.object_id = ind.object_id
	INNER JOIN sys.partitions par
		ON  ind.object_id = par.object_id
		AND ind.index_id = par.index_id
	INNER JOIN sys.allocation_units alc
		ON par.partition_id = alc.container_id
	LEFT OUTER JOIN sys.schemas sch
		ON tab.schema_id = sch.schema_id
GROUP BY 	tab.name, 
		sch.name, 
		par.rows
ORDER BY par.rows DESC;

Esta lista de puntos explica la consulta anterior y cómo se construye.

  • La palabra clave «ORDER BY par.rows DESC;» se utiliza para ordenar la lista de tablas de SQL Server por su número de filas, en orden descendente.
  • Para ordenar por esquema y luego por nombre de tabla, usa «ORDER BY 1,2» o «ORDER BY sch.name, tab.name; » en su lugar.
  • El tamaño de las tablas se indica en KiloBytes o KB.

Acerca de la listación de objetos de SQL Server y tablas del sistema

Este tutorial técnico de MS SQL Server explica cómo crear y usar una consulta para listar todas las tablas en una base de datos dada. Si todavía eres nuevo en SQL Server y quieres crear una tabla, aquí está cómo crear una tabla de SQL Server e insertar algunas filas de datos. Es posible mostrar otra lista de tablas de MS SQL con más enfoque en el espacio en disco disponible.

https://expert-only.com/en/t-sql/sql-server-table-size-disk-space/

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*