안녕하세요!
MSSQL_DB사이즈 증가 추이 확인 관련하여 두 가지 질문드립니다.
별도의 모니터링 DB나 등록된 SQL Job등이 없을 때, 운영 중인 DB (mdf, ldf) 사이즈 증가 추이를 알 수 있는 방법이 있을까요??
쿼리나 보고서를 통해 현 시점이 아닌 최소한 년 단위의 히스토리를 확인하고 싶습니다.
예를들어,
2020-01-01 test.mdf size / test.ldf size
2020-02-01 test.mdf size / test.ldf size
.
.
.
2023-03-01 test.mdf size / test.ldf size
이런식으로요...
Q1) 위와 같이 쿼리를 통한 일자별 row data 혹은 ssms내 보고서를 통해 볼 수 있는 방법이 있을까요??
> ssms - 백업 및 복원 이벤트를 통해 백업 당시 DB 사이즈를 통해 확인하는 방법은 알고있습니다.
> Engine Log 등에는 안나오는 것 같더라구요 ㅜㅜ.. SQL Server Agent Log에도 안나오구요
Q2) 특정 시점에 운영 중인 DB Size가 폭증하였는데,, 어느 Table의 데이터가 늘어난지도 함께 알 수 있는 방법이 있을까요??
행복한 명절 연휴 보내셨길 바랍니다!!
읽어주셔서 감사합니다.
Comment 3
-
코난(김대우)
2023.10.05 09:49
-
박첨지
2023.10.05 14:47
답변 감사합니다!
좋은 하루 보내세요.
-
BI
2023.10.16 14:19
기본 추적에 데이터 베이스 확장내역이 기록되고 있습니다.
아래 쿼리를 사용하시면 확인 하실 수 있을 것 같습니다.
DECLARE
@TraceFileName nvarchar(256)
, @BeforeFileName nvarchar(256)
, @IsFile intSELECT
@TraceFileName = CAST([value] AS nvarchar(256))
FROM sys.fn_trace_getinfo(1)
WHERE
property = 2SET @BeforeFileName = SUBSTRING(@TraceFileName, 0, LEN(@TraceFileName) - CHARINDEX(N'_', REVERSE(@TraceFileName)) + 1) + N'_' + TRY_CAST(TRY_CAST(REPLACE(RIGHT(@TraceFileName, CHARINDEX(N'_', REVERSE(@TraceFileName)) - 1), N'.trc', N'') AS int) - 1 AS nvarchar(10)) + N'.trc'
EXEC xp_fileexist @BeforeFileName, @IsFile = @IsFile OUTPUT
IF @IsFile = 1
SET @TraceFileName = @BeforeFileNameSELECT
T.EventClass
, TC.[name] AS [CategoryName]
, TE.[name] AS [EventName]
, T.[StartTime]
, T.[EndTime]
, ISNULL(T.[DatabaseName], FORMAT(T.[DatabaseID], N'DB_ID:######')) AS [DatabaseName]
, T.[HostName]
, CASE
WHEN T.[LoginName] <> T.[SessionLoginName] THEN T.[LoginName] + N'(Session:'+ T.[SessionLoginName] +N')'
ELSE ISNULL(T.[LoginName], T.[SessionLoginName]) END AS LoginName
, T.[Duration]
, T.[FileName]
, T.[IntegerData]
FROM sys.fn_trace_gettable(@TraceFileName, DEFAULT) T
JOIN sys.trace_events AS TE
ON
TE.trace_event_id = T.EventClass
JOIN sys.trace_categories AS TC
ON
TC.category_id = TE.category_id
WHERE
T.[EventClass] IN (92, 93)
기본 추적에 대해 자세한 내용은 Using the SQL Server Default Trace to Audit Events (mssqltips.com) 에서 확인 하실 수 있습니다.
cmd_comment_vote_user Upvote1 Downvote0 Comment Update Delete
1) 데이터베이스의 사이즈를 기록해 두지 않으셨다면, 데이터베이스 사이즈의 변화 추이를 알기 어렵습니다.
주기적으로 "유지관리계획" 등을 이용해 데이터베이스 크기를 계산하는 쿼리를 수행하고 결과를 특정 데이터베이스 테이블에 쌓아 두어야만 알 수 있을 것입니다.
2) 데이터베이스내 테이블 크기를 확인하는 방법은 아래 내용을 참고하세요.
https://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database
도움 되시길 바랍니다.