Database/MSSQL
[MSSQL] 전체 데이터베이스 파일 정보 조회 (전체 DB 파일 목록 정보)
달빛에취하다
2017. 3. 15. 09:43
MSSQL에서 전체 데이터 베이스의 파일 정보를 조회하기 위한 내용입니다.
----------------------------------------------------------------------------------------------------
DECLARE @TBL_TEMP TABLE
(
ROWNUM int,
DBNAME VARCHAR(1000),
QRY VARCHAR(1000)
)
DECLARE @TBL_DB TABLE
(
[NAME_DB] [varchar](255),
[NAME_LOGICAL] [sysname],
[file_id] [int],
[physical_name] [nvarchar](4000),
[size] [nvarchar](200)
)
DECLARE @QRY1 VARCHAR(4000);
DECLARE @i int, @maxCnt int;
INSERT INTO @TBL_TEMP
SELECT
ROW_NUMBER() OVER(ORDER BY dtb.name)
,dtb.name AS [Name]
,' SELECT '''+ dtb.name + ''' NAME_DB, name NAME_LOGICAL,[file_id], physical_name, ''size'' = convert(nvarchar(50), convert (bigint, size) * 8 / 1024) + N'' MB''FROM ['+dtb.name+'].sys.database_files WHERE type_desc in (''ROWS'',''LOG'')' QRY
-- 조건절내에 WHERE 문으로 LDF, MDF 구분하여 조회 가능
FROM
master.sys.databases AS dtb
WHERE 1=1
AND state_desc = 'ONLINE'
ORDER BY [Name] ASC
SELECT @i = 1, @maxCnt = MAX(ROWNUM) FROM @TBL_TEMP;
WHILE @i<=@maxCnt
BEGIN
SELECT @QRY1 = QRY FROM @TBL_TEMP WHERE ROWNUM = @i;
INSERT into @TBL_DB EXEC (@QRY1)
SET @i = @i + 1;
END;
SELECT *
fROM @TBL_DB
----------------------------------------------------------------------------------------------------