데이터베이스 증가 모니터링은 서버 리소스 계획의 핵심 요소입니다. 이 스크립트를 사용하여 이해하기 쉬운 데이터베이스 증가 보고서 작성
데이터베이스 증가를 모니터링해야하는 이유
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 시트에 복사합니다.
3 단계 : 이제 시트에서 처음 두 행을 선택하고 2D 선 차트를 삽입합니다.
선택한 데이터베이스에 대한 추세 차트가 생성됩니다. 차트에서 X 축은 월을 나타내고 Y 축은 데이터베이스 크기 (GB)를 나타냅니다.
4 단계 : '더하기'기호를 끌어서 전체 데이터를 선택합니다.
이것은 차트에있는 모든 데이터베이스의 추세를 보여줍니다.
3 단계를 건너 뛰고 전체 테이블을 선택하여 2D 꺾은 선형 차트를 삽입하면 차트가 계속 표시되지만 X 축은 월 대신 데이터베이스 이름을 나타내며 이는 필수 출력이 아닙니다.
출력 테이블에는 일부 NULL 값이있을 수 있습니다. 이는 데이터베이스 백업 기록에 해당 월의 데이터베이스에 대한 레코드가 없을 수 있기 때문에 발생합니다. 또한 스크립트가 증가 추세를 추적하기 위해 백업 기록 테이블의 백업 크기를 참조 함을 의미합니다. 데이터베이스가 백업 계획에 포함되지 않은 경우 출력 테이블은 여전히 데이터베이스 이름을 보유하지만 모든 월의 값은 NULL이됩니다.
대형 데이터베이스 수정
이전에 위의 전략을 따르지 않았고 데이터베이스가 너무 크면 다양한 문제가 발생할 수 있습니다. 이러한 경우에는 SQL Server 파일 복구 도구 문제를 효과적이고 효율적으로 해결합니다.
저자 소개 :
Neil Varley는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. Outlook 문제 복구 그리고 엑셀 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM





