T-SQL: Listar todas las tablas de una base de datos con sus respectivos tamaños

·2 min de lectura·

¿Habéis necesitado alguna vez saber el tamaño que ocupa cada tabla de una base de datos en SQL Server?. Investigando sobre el tema, he logrado obtener la consulta con la que obtenemos esa información.

Básicamente se trata de hacer una consulta de la tabla “sysindexes”, pero al tener muchos campos y algunos datos directamente ilegibles construimos una consulta haciendo las conversiones de datos solo de los campos que nos interesan, así como también los filtros respectivos para que no se incluya información que no sean propiedades de una tabla. Finalmente a esta consulta le podemos dar un formato numérico más legible y ordenarlo por el campo que nos sea de interés. En el siguiente ejemplo está ordenado descendentemente por número de registros que contiene la tabla.

SELECT X.\[name\], REPLACE(CONVERT(varchar, CONVERT(money, X.\[rows\]), 1), '.00', '') AS \[rows\], REPLACE(CONVERT(varchar, CONVERT(money, X.\[reserved\]), 1), '.00', '') AS \[reserved\], REPLACE(CONVERT(varchar, CONVERT(money, X.\[data\]), 1), '.00', '') AS \[data\], REPLACE(CONVERT(varchar, CONVERT(money, X.\[index\_size\]), 1), '.00', '') AS \[index\_size\], REPLACE(CONVERT(varchar, CONVERT(money, X.\[unused\]), 1), '.00', '') AS \[unused\] FROM (SELECT CAST(object\_name(id) AS varchar(50)) AS \[name\], SUM(CASE WHEN indid < 2 THEN CONVERT(bigint, \[rows\]) END) AS \[rows\], SUM(CONVERT(bigint, reserved)) \* 8 AS reserved, SUM(CONVERT(bigint, dpages)) \* 8 AS data, SUM(CONVERT(bigint, used) - CONVERT(bigint, dpages)) \* 8 AS index\_size, SUM(CONVERT(bigint, reserved) - CONVERT(bigint, used)) \* 8 AS unused FROM sysindexes WITH (NOLOCK) WHERE sysindexes.indid IN (0, 1, 255) AND sysindexes.id > 100 AND object\_name(sysindexes.id) <> 'dtproperties' GROUP BY sysindexes.id WITH ROLLUP ) AS X WHERE X.\[name\] is not null ORDER BY X.\[rows\] DESC 

Si quieres más trucos de este tipo te invito a echarle un vistazo a este libro de SQL Server 2014 en Español

Comprar en Amazon SQL Server 2014 | Amazon Kindle

Espero que os sea de utilidad.

Comentarios (0)

Sé el primero en comentar.

T-SQL: Re-Indexar todas las tablas de una Base de Datos

·1 min de lectura

El artículo explica cómo re‑indexar todas las tablas de una base de datos SQL Server cuando no existe un comando único para ello. Se presenta un script TSQL que recorre el catálogo de datos, obtiene los nombres de todas las tablas base y ejecuta DBCC DBREINDEX para cada una, evitando mensajes de información. El cursor se cierra y libera al finalizar. El autor sugiere que el código sea útil y menciona un libro de SQL Server 2014 en español como recurso adicional.

Instalando SQL Server en Linux

·3 min de lectura

Microsoft lanzó una versión de SQL Server para Linux, lo que permite a los administradores instalar, usar y mantener el motor en sistemas como Red Hat Enterprise Linux 7, CentOS 7 y Ubuntu 16.04 64 bits. Se requiere al menos 4 GB de RAM. El proceso en Ubuntu implica agregar la clave GPG, añadir el repositorio, actualizar paquetes, instalar dependencias y ejecutar el script de configuración, aceptando los términos de licencia. Una vez instalado, se puede conectar con la línea de comandos, crear bases de datos y usar los mismos comandos que en Windows.