List All databases by Size and Available space SQL SERVER 2008 R2 -


i'm sysadmin no means dba person, , such i'd ask help.

i have 2 questions. first, how query sql server return list of databases (without default ones master etc..) , list db size , available space (preferably in gb):

see picture

what need know if "space available" affects .bak file size of respective db.

hoping quick response. in advance.

david sankovsky.

right, after tweaking , rtfm-ing came this:

if exists(     select 1     tempdb.dbo.sysobjects     id = object_id('tempdb.dbo.#dbobj') ) drop table #dbobj  create table #dbobj (       [db] sysname     , reservedpages int     , usedpages int     , pages int )  exec sys.sp_msforeachdb '     use [?]      insert #dbobj     (           [db]         , reservedpages         , usedpages         , pages     )     select           db_name()         , pg.reservedpages         , pg.usedpages         , pg.pages     (         select               reservedpages = sum(a.total_pages)             , usedpages = sum(a.used_pages)             , pages = sum(                 case                     when it.internal_type in (202, 204, 207, 211, 212, 213, 214, 215, 216, 221, 222) 0                     when a.[type] != 1 , p.index_id < 2 a.used_pages                     when p.index_id < 2 a.data_pages else 0                 end               )         sys.partitions p         join sys.allocation_units on p.[partition_id] = a.container_id         left join sys.internal_tables on p.[object_id] = it.[object_id]     ) pg'  select       d.name     , total_size_mb = data.row_size_mb + data.log_size_mb     , data.log_size_mb     , data.row_size_mb     , unused_size_mb = cast((do.reservedpages - do.usedpages) * 8. / 1024 decimal(10,2))     , unallocated_space_gb =         cast(case when data.row_size >= do.reservedpages             (data.row_size - do.reservedpages) * 8. / 1024 /1024             else 0         end decimal(10,2)) (     select           df2.database_id         , log_size_mb = cast(df2.log_size * 8. / 1024 decimal(10,2))         , row_size_mb = cast(df2.row_size * 8. / 1024 decimal(10,2))         , df2.log_size         , df2.row_size     (         select               df.database_id             , log_size = sum(case when df.type_desc = 'log' df.size end)             , row_size = sum(case when df.type_desc = 'rows' df.size end)         sys.master_files df         group df.database_id     ) df2 ) data join sys.databases d on data.database_id = d.database_id join #dbobj on do.db = d.name order data.row_size_mb + data.log_size_mb desc 

that seems job done. feel free share , everyone. sql link


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

php - Find a regex to take part of Email -