CLR말고 Disk의 정보를 가져오려고 하는데요.
open쿼리 또는 링크드 서버만 이용하여, 중앙서버에서 날리고자 합니다.
혹시 방법이 있을까요?
Disk정보중에 남는 Disk 정보는 어떻게 볼수있는데 총 Disk 사이즈는 안나오네요.
master.dbo.xp_fixeddrives
이 방법은 남은 용량만 볼수있기에... 혹시 총 용량 보는 것이 있을까요?
Comment 4
-
군고구마
2016.02.22 13:32
-
Terry
2016.02.22 13:53
헛..찾으셨군요..^^;; 한발 늦었네요..ㅎ
-
Terry
2016.02.22 13:52
구글링해서 찾았네요..
영문기준으로 작성되어있어서 조금 수정했습니다.
1. 검색 결과 페이지
2. 참고사이트
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=92571
3. cmd_shell 활성화 관련
https://msdn.microsoft.com/ko-kr/library/ms190693(v=sql.120).aspx
그럼 수고하세요~~
---쿼리시작---
-- Initialize Control Mechanism
DECLARE @Drive TINYINT,
@SQL VARCHAR(100)SET @Drive = 99
Select char(@Drive)
-- Setup Staging Area
DECLARE @Drives TABLE
(
Drive CHAR(1),
Info VARCHAR(Max)
)WHILE @Drive <= 122
BEGIN
SET @SQL = 'EXEC xp_cmdshell ''fsutil volume diskfree ' + CHAR(@Drive) + ':'''
INSERT @Drives
(
Info
)
EXEC (@SQL)UPDATE @Drives
SET Drive = CHAR(@Drive)
WHERE Drive IS NULLSET @Drive = @Drive + 1
END-- Show the expected output
SELECT Drive,
-- SQL 언어셋이 한글일 경우 시작
SUM(CASE WHEN Info LIKE '%사용 가능한 공간(KB): %' THEN CAST(REPLACE(SUBSTRING(Info,Charindex(':',Info)+1,LEN(Info)), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS TotalBytes,
SUM(CASE WHEN Info LIKE '%전체 공간(KB): %' THEN CAST(REPLACE(SUBSTRING(Info,Charindex(':',Info)+1,LEN(Info)), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS FreeBytes,
SUM(CASE WHEN Info LIKE '%사용 가능한 빈 공간(KB): %' THEN CAST(REPLACE(SUBSTRING(Info,Charindex(':',Info)+1,LEN(Info)), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS AvailFreeBytes
-- SQL 언어셋이 한글일 경우 끝/* -- SQL 언어셋이 영문 일 경우 시작
SUM(CASE WHEN Info LIKE 'Total # of bytes : %' THEN CAST(REPLACE(SUBSTRING(Info, 32, 48), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS TotalBytes,
SUM(CASE WHEN Info LIKE 'Total # of free bytes : %' THEN CAST(REPLACE(SUBSTRING(Info, 32, 48), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS FreeBytes,
SUM(CASE WHEN Info LIKE 'Total # of avail free bytes : %' THEN CAST(REPLACE(SUBSTRING(Info, 32, 48), CHAR(13), '') AS BIGINT) ELSE CAST(0 AS BIGINT) END) AS AvailFreeBytes
-- SQL 언어셋이 영문 일 경우 끝*/
FROM (
SELECT Drive,
Info
FROM @Drives
--SQL 언어셋이 한글일경우 시작
WHERE Info Like '%공간(KB)%'
--SQL 언어셋이 영문일경우 시작
/* SQL 언어셋이 영문일경우 시작WHERE Info LIKE 'Total # of %'
SQL 언어셋이 영문일경우 끝*/
) AS d
GROUP BY Drive
ORDER BY Drive
---쿼리끝--- -
군고구마
2016.02.23 09:27
ㅎㅎㅎ
감사합니다.
제가 찾은것은 db파일이 있는 것만 되네요 ^^;
이건 전부 다 되네요 ㅎㅎㅎ
https://thelonelydba.wordpress.com/2014/09/03/ms-sql-find-total-server-disk-space-in-t-sql/
찾았습니다 ~
혹시 필요하신 분이 계실수 있어서 내용 지우지 않고, 댓글로 달아둡니다.