Hvordan overvåke SQL Server Databasevekst ved hjelp av TSQL og Excel

Overvåking av databasevekst er en nøkkelfaktor i planleggingen av en servers ressurs. Bruk dette skriptet og lag en lettfattelig databasevekstrapport

Hvorfor du trenger å overvåke databasevekst

Hvis du er en SQL-databaseadministrator og hvis du ikke har "SQL Server databasekapasitetsplanlegging" i nøkkeloppgavelisten din, så kan du være sikker på at databasene på serveren din vil fylle opp diskplassen din ganske snart. Å spore størrelsen og veksten til SQL-databaser er en av hovedoppgavene for kapasitetsplanlegging. Dette sikrer også at det er nok plass på disken til at databasene dine kan vokse.

DIY via SQL Script og Excel

I denne artikkelen vil vi bruke SQL og Excel til å fange opp størrelsen på SQL-databaser sammen med mønsteret. Dette vil gjøre oss i stand til å planlegge for overhengende plassbehov og også hjelpe oss å forstå tidslinjen der det er et tungt volum.

Denne prosessen er delt inn i fire forskjellige trinn, slik at du kan følge med uten problemer.

Trinn 1: Kjør dette skriptet i et nytt spørringsvindu.

Utdataene vil ha databasenavn som radoverskrifter og måned som kolonneoverskrifter. Verdiene vist i utdataene er databasestørrelsen i 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

Utgang:Utdatadatabasestørrelse

Trinn 2: Opprett en ny forekomst av Excel, og kopier utdataene fra forrige trinn inn i det nye Excel-arket ditt.

Kopier utdataene til Excel-ark

Trinn 3: Velg nå de to første radene på arket og sett inn et 2D-linjediagram.

Dette vil lage trenddiagrammet for den valgte databasen. I diagrammet vil X-aksen angi måneder og Y-aksen vil angi databasestørrelsen i GB.Velg de to første radene på arket og sett inn et 2D-linjediagram

Trinn 4: Velg hele dataen ved å dra 'pluss'-symbolet for å omslutte det.

Dette vil vise trenden til alle databaser på diagrammet.Velg hele data

Vis trenden for alle databaser på diagrammet

Hvis du hopper over trinn 3 og setter inn et 2D-linjediagram ved å velge hele tabellen, vil du fortsatt få et diagram, men X-aksen vil angi databasenavn i stedet for måned. Dette er ikke den nødvendige utgangen.Hopp over trinn 3 og sett inn et 2D-linjediagram ved å velge hele tabellen

Utdatatabellen kan ha noen NULL-verdier. Dette skjer fordi databasens sikkerhetskopihistorikk kanskje ikke har noen post for databasen for den aktuelle måneden. Det innebærer også at skriptet refererer til sikkerhetskopistørrelsen i backuphistorikktabellen for å spore veksttrenden. Hvis noen av databasene dine ikke er inkludert i sikkerhetskopiplanen, vil utdatatabellen fortsatt inneholde databasenavnet, men verdiene for alle månedene vil være NULL

Fiks overdimensjonert database

Hvis du ikke følger strategien ovenfor tidligere, og databasen din er overdimensjonert, kan det forårsake ulike problemer. I et slikt tilfelle er det bedre å finne en SQL Server filgjenopprettingsverktøy å løse problemet effektivt og effektivt.

Forfatterintroduksjon:

Neil Varley er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparere Outlook-problem og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.