Tamaño de las bases de datos de una instancia SQL Server

¿Cuánto ocupan las bases de datos de mi servidor/instancia de SQL Server?

En una instancia de SQL Server, podemos tener varias bases de datos y cada una de ellas tiene al menos un archivo para los datos y otro para el transaction log, por lo tanto, para saber el tamaño que ocupa una base de datos hay que ver lo que ocupan los datos y los logs.

Consulta en base de datos

Con la siguiente consulta puedes obtener los tamaños de datos, log y total de cada una de las bases de datos de la instancia.

with fs
as
(
select database_id, type, size * 8.0 / 1024 size from sys.master_files
)
select name,
(select sum(size) from fs where type = 0 and fs.database_id = db.database_id) DataSizeMB,
(select sum(size) from fs where type = 1 and fs.database_id = db.database_id) LogSizeMB,
((select sum(size) from fs where type = 0 and fs.database_id = db.database_id)+ (select sum(size) from fs where type = 1 and fs.database_id = db.database_id))
TotalDatabaseSizeMB
from sys.databases db
order by TotalDatabaseSizeMB DESC

Los datos ofrecen la información en Megabytes (MB).

4 opiniones en “Tamaño de las bases de datos de una instancia SQL Server”

    1. Hola Richard,

      Puedes consultar en este enlace a la documentación de Microsoft, que el campo «size» de sys.master_files devuelve los datos en bloques de 8-KB, es decir en 8 Kilobytes.

      https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-files-transact-sql?view=sql-server-ver15

      O lo que es lo mismo, nos va a dar un número 8 veces menor. Por ejemplo, si el tamaño es de 64 Kilobytes, nos va a devolver 8, porque está expresado en bloques de 8KB.

      Por lo tanto, lo primero que tenemos que hacer para poder convertir a Megabytes, es normalizar la cifra que nos devuelve a Kilobytes, antes de dividirlo por 1024.

      También puedes hacer el cálculo de otra manera, por ejemplo, sabiendo que la consulta devuelve el tamaño en bloques de 8KB, podemos simplemente cambiar el factor que tenemos que aplicar para convertir a Megabytes. En este caso 1024 / 8, es decir 128. Por lo tanto la cuenta sería «size / 128» en vez de «size * 8.0 / 1024», aunque más simple, seguramente sea más complicado entender de donde ha salido ese 128.

      Saludos

Deja una respuesta

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