¿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).
Gracias por la información!
Estimado , me podrias aclarar el motivo de porque se multiplica por 8 y luego divide en 1024.
Muchas gracias de antemano
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
Hola como están, si quiero poner un campo mas con la fecha actual como seria la consulta SQL?