데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
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)