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.
- La primera es una simple lista de tablas.
- La segunda consulta muestra información útil como la columna object_id, create_date y modify_date.
- 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
Table of Contents
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';
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.
Be the first to comment