모니터링 방법 SQL Server TSQL 및 Excel을 사용한 데이터베이스 증가

지금 공유 :

데이터베이스 증가 모니터링은 서버 리소스 계획의 핵심 요소입니다. 이 스크립트를 사용하여 이해하기 쉬운 데이터베이스 증가 보고서 작성

데이터베이스 증가를 모니터링해야하는 이유

SQL Database 관리자이고 "SQL Server 데이터베이스 용량 계획”을 선택하면 서버의 데이터베이스가 곧 디스크 공간을 채울 것입니다. SQL 데이터베이스의 크기와 증가를 추적하는 것은 용량 계획의 주요 작업 중 하나입니다. 이렇게하면 데이터베이스가 확장 될 수있는 충분한 디스크 공간이 확보됩니다.

SQL Script 및 Excel을 통한 DIY

이 기사에서는 SQL과 Excel을 사용하여 패턴과 함께 SQL 데이터베이스의 크기를 캡처합니다. 이를 통해 우리는 임박한 공간 요구 사항을 계획 할 수 있으며 부피가 큰 일정을 이해하는 데 도움이됩니다.

이 프로세스는 XNUMX 단계로 세분화되어 문제없이 수행 할 수 있습니다.

1 단계 : 새 쿼리 창에서이 스크립트를 실행합니다.

출력에는 행 머리글로 데이터베이스 이름이 있고 열 머리글로 월이 있습니다. 출력에 표시된 값은 데이터베이스 크기 (GB)입니다.

declare @v_count as integer, @do_count as integer, @v_month as varchar(20),@sql as varchar(5000)

create table [t_databases]
(
Database_Name varchar(200),
January       float(3),
February      float(3),
March  float(3),
April  float(3),
May    float(3),
June   float(3),
July   float(3),
August float(3),
September     float(3),
October       float(3),
November      float(3),
December      float(3),
)
create table t_databases_gateway
(
Database_Name varchar(200),
Database_Size float(3)
)
set @v_count = (select COUNT(*) from t_databases ) 
if @v_count = 0 
begin
insert into t_databases(Database_Name)
select name from sysdatabases 
 end
if @v_count <> 0 
 begin 
--this script captures the size of all databases. You can add a where clause to capture the size of specific database name 
 INSERT t_databases (Database_Name) 
 SELECT DISTINCT Name FROM sysdatabases cr LEFT JOIN t_databases c ON cr.Name = c.Database_Name WHERE c.Database_Name IS NULL 
 end 
 --select * from master.dbo.t_databases 
 --drop table t_databases 
 set @do_count = 1 
 while (@do_count <=12) 
 begin 
 set @v_month = DATENAME(m, str(@do_count) + '/1/2016') –change the year to 2017 or other year as per your requirement 
 truncate table master.dbo.t_databases_gateway 
 insert into master.dbo.t_databases_gateway select distinct
(msdb.dbo.backupset.[database_name]),max(msdb.dbo.backupset.[Backup_Size]/1073741824)
from msdb.dbo.backupset inner join master.dbo.t_databases on msdb.dbo.backupset.[database_name] = master.dbo.t_databases.[Database_Name] where
datepart(m,msdb.dbo.backupset.[backup_finish_date]) =  @do_count and datepart(yyyy,msdb.dbo.backupset.[backup_finish_date] ) = 2015 group by msdb.dbo.backupset.[database_name]
set @sql = 'update master.dbo.t_databases set ' + @v_month + ' = (select Database_Size from master.dbo.t_databases_gateway where master.dbo.t_databases.Database_Name = master.dbo.t_databases_gateway.Database_Name)'
exec (@sql)
set @do_count = @do_count + 1
end
select * from t_databases
drop table t_databases_gateway
drop table t_databases

출력 :출력 데이터베이스 크기

2 단계 : Excel의 새 인스턴스를 만들고 이전 단계의 출력을 새 Excel 시트에 복사합니다.

출력을 Excel 시트로 복사

3 단계 : 이제 시트에서 처음 두 행을 선택하고 2D 선 차트를 삽입합니다.

선택한 데이터베이스에 대한 추세 차트가 생성됩니다. 차트에서 X 축은 월을 나타내고 Y 축은 데이터베이스 크기 (GB)를 나타냅니다.시트에서 처음 두 행을 선택하고 2D 꺾은 선형 차트 삽입

4 단계 : '더하기'기호를 끌어서 전체 데이터를 선택합니다.

이것은 차트에있는 모든 데이터베이스의 추세를 보여줍니다.전체 데이터 선택

차트에 모든 데이터베이스의 추세 표시

3 단계를 건너 뛰고 전체 테이블을 선택하여 2D 꺾은 선형 차트를 삽입하면 차트가 계속 표시되지만 X 축은 월 대신 데이터베이스 이름을 나타내며 이는 필수 출력이 아닙니다.3 단계를 건너 뛰고 전체 테이블을 선택하여 2D 라인 차트 삽입

출력 테이블에는 일부 NULL 값이있을 수 있습니다. 이는 데이터베이스 백업 기록에 해당 월의 데이터베이스에 대한 레코드가 없을 수 있기 때문에 발생합니다. 또한 스크립트가 증가 추세를 추적하기 위해 백업 기록 테이블의 백업 크기를 참조 함을 의미합니다. 데이터베이스가 백업 계획에 포함되지 않은 경우 출력 테이블은 여전히 ​​데이터베이스 이름을 보유하지만 모든 월의 값은 NULL이됩니다.

대형 데이터베이스 수정

이전에 위의 전략을 따르지 않았고 데이터베이스가 너무 크면 다양한 문제가 발생할 수 있습니다. 이러한 경우에는 SQL Server 파일 복구 도구 문제를 효과적이고 효율적으로 해결합니다.

저자 소개 :

Neil Varley는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. Outlook 문제 복구 그리고 엑셀 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.