Come monitorare SQL Server Crescita del database utilizzando TSQL ed Excel

Condividi ora:

Il monitoraggio della crescita del database è un fattore chiave nella pianificazione delle risorse di un server. Usa questo script e crea un report sulla crescita del database di facile comprensione

Perché è necessario monitorare la crescita del database

Se sei un amministratore del database SQL e se non hai "SQL Server pianificazione della capacità del database” nell'elenco delle attività chiave, allora puoi essere certo che i database sul tuo server riempiranno il tuo spazio su disco molto presto. Il monitoraggio delle dimensioni e della crescita dei database SQL è una delle attività principali della pianificazione della capacità. Ciò garantisce anche che vi sia spazio sufficiente su disco per la crescita dei database.

Fai da te tramite SQL Script ed Excel

In questo articolo utilizzeremo SQL ed Excel per acquisire la dimensione dei database SQL insieme al modello. Questo ci consentirà di pianificare i requisiti di spazio imminenti e ci aiuterà anche a capire la sequenza temporale durante la quale si verifica un volume elevato.

Questo processo è suddiviso in quattro diversi passaggi in modo che tu possa seguirlo senza problemi.

Passaggio 1: eseguire questo script in una nuova finestra di query.

L'output avrà nomi di database come intestazioni di riga e Mese come intestazioni di colonna. I valori mostrati nell'output sono le dimensioni del database in 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

Uscita:Dimensione del database di output

Passaggio 2: creare una nuova istanza di Excel e copiare l'output del passaggio precedente nel nuovo foglio Excel.

Copia l'output nel foglio Excel

Passaggio 3: ora seleziona le prime due righe sul foglio e inserisci un grafico a linee 2D.

Questo creerà il grafico di tendenza per il database selezionato. Nel grafico, l'asse X indicherà i mesi e l'asse Y indicherà la dimensione del database in GB.Seleziona le prime due righe sul foglio e inserisci un grafico a linee 2D

Passaggio 4: selezionare tutti i dati trascinando il simbolo "più" per avvolgerli.

Questo mostrerà l'andamento di tutti i database sul grafico.Seleziona Tutti i dati

Mostra la tendenza di tutti i database sul grafico

Se salti il ​​passaggio 3 e inserisci un grafico a linee 2D selezionando l'intera tabella, otterrai comunque un grafico ma l'asse X indicherà i nomi dei database anziché il mese, questo non è l'output richiesto.Salta il passaggio 3 e inserisci un grafico a linee 2D selezionando l'intera tabella

La tabella Output potrebbe avere alcuni valori NULL. Ciò accade perché la cronologia di backup del database potrebbe non avere alcun record per il database per quel particolare mese. Implica inoltre che lo script faccia riferimento alla dimensione del backup nella tabella della cronologia del backup per tenere traccia del trend di crescita. Se uno dei tuoi database non è incluso nel piano di backup, la tabella di output conterrà comunque il nome del database ma i valori per tutti i mesi saranno NULL

Risolto il problema con il database sovradimensionato

Se in passato non segui la strategia di cui sopra e il tuo database è sovradimensionato, potrebbe causare vari problemi. In tal caso, faresti meglio a trovare a SQL Server strumento di recupero file per risolvere il problema in modo efficace ed efficiente.

Introduzione dell'autore:

Neil Varley è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui riparare il problema di Outlook ed eccellere prodotti software di recupero. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.