DB_NAME() AS "Database"
,e.tSize AS "Size(MB)"
,SUM(used_page_count)*8 /1024.0 AS "Used(MB)"
,e.tSize-SUM(used_page_count)*8 /1024.0 AS "Free(MB)"
,cast((SUM(used_page_count)*8/1024.0)*100/e.tSize AS DECIMAL(10,2))AS "사용량(%)"
FROM sys.objects AS a JOIN sys.dm_db_partitiON_stats AS b
ON a.object_id = b.object_id
JOIN sys.sysindexes AS c
ON a.object_id = c.id
AND b.index_id = c.indid
JOIN sys.filegroups AS d
ON c.groupid = d.data_space_id
JOIN (SELECT data_space_id,SUM(size)*8/1024.0 AS "tSize"
FROM sys.databASe_files WHERE data_space_id <> 0 GROUP BY data_space_id) AS e
ON d.data_space_id = e.data_space_id
GROUP BY d.name,c.groupid,e.tSize
위 쿼리로 저렇게 나왔는데,
모든 DB 에 대해서 확인 하고 싶습니다.
방법좀 알려주세요..ㅠㅠ
Comment 1
-
Terry
2016.11.25 12:04
Declare @li_i integer,@li_cnt integer,@ls_dbname varchar(100),@ls_sql varchar(max)create table #db(dbname varchar(100),seq integer)insert into #dbselect a.name,ROW_NUMBER() Over (Order By a.name)from sys.sysdatabases aSet @li_i = 0Select @li_cnt = Max(a.seq)From #db aSet @ls_sql = ''While @li_i < @li_cntBeginSet @ls_dbname = ''Set @li_i = @li_i + 1Select @ls_dbname = a.dbnameFrom #db aWhere a.seq = @li_iSet @ls_sql = @ls_sql + 'SELECT''' + @ls_dbname + ''' As "Database",e.tSize AS "Size(MB)",SUM(used_page_count)*8 /1024.0 AS "Used(MB)",e.tSize-SUM(used_page_count)*8 /1024.0 AS "Free(MB)",cast((SUM(used_page_count)*8/1024.0)*100/e.tSize AS DECIMAL(10,2))AS "사용량(%)"FROM ' + @ls_dbname + '.sys.objects AS aInner JOIN' + @ls_dbname + '.sys.dm_db_partition_stats AS bON a.object_id = b.object_idInner JOIN' + @ls_dbname + '.sys.sysindexes AS cON a.object_id = c.idAND b.index_id = c.indidInner JOIN' + @ls_dbname + '.sys.filegroups AS dON c.groupid = d.data_space_idInner JOIN (SELECT data_space_id,SUM(size)*8/1024.0 AS "tSize"FROM ' + @ls_dbname + '.sys.database_filesWHERE data_space_id <> 0GROUP BY data_space_id) AS eON d.data_space_id = e.data_space_idGROUP BY d.name,c.groupid,e.tSize'IF @li_i < @li_cntBeginSet @ls_sql = @ls_sql + ' Union All 'EndEndExec (@ls_sql)