Jak sledovat SQL Server Růst databáze pomocí TSQL a Excel

Sdílej nyní:

Monitorování růstu databáze je klíčovým faktorem při plánování zdrojů serveru. Použijte tento skript a vytvořte snadno srozumitelnou zprávu o růstu databáze

Proč je třeba sledovat růst databáze

Pokud jste správcem databáze SQL a pokud nemáte „SQL Server plánování kapacity databáze “ve svém seznamu klíčových úkolů, pak si můžete být jisti, že databáze na vašem serveru brzy zaplní místo na disku. Sledování velikosti a růstu databází SQL je jedním z hlavních úkolů plánování kapacity. Tím se také zajistí, že na disku bude dostatek místa pro růst vašich databází.

DIY přes SQL Script a Excel

V tomto článku použijeme SQL a Excel k zachycení velikosti databází SQL spolu se vzorem. To nám umožní plánovat bezprostřední požadavky na prostor a také nám pomůže pochopit časovou osu, během níž je velký objem.

Tento proces je rozdělen do čtyř různých kroků, abyste jej mohli bez problémů sledovat.

Krok 1: Spusťte tento skript v novém okně dotazu.

Výstup bude mít názvy databází jako záhlaví řádků a měsíc jako záhlaví sloupců. Hodnoty zobrazené na výstupu jsou velikost databáze v 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

Výstup:Velikost výstupní databáze

Krok 2: Vytvořte novou instanci aplikace Excel a zkopírujte výstup z předchozího kroku do nového listu aplikace Excel.

Zkopírujte výstup do listu aplikace Excel

Krok 3: Nyní vyberte první dva řádky na listu a vložte 2D spojnicový graf.

Tím se vytvoří trendový graf pro vybranou databázi. V grafu bude osa X označovat měsíce a osa Y bude označovat velikost databáze v GB.Vyberte první dva řádky na listu a vložte 2D spojnicový graf

Krok 4: Vyberte všechna data přetažením symbolu „plus“ a obklopte je.

Zobrazí se trend všech databází v grafu.Vyberte Celá data

Ukažte trend všech databází v grafu

Pokud přeskočíte krok 3 a vložíte 2D spojnicový graf výběrem celé tabulky, stále se vám zobrazí graf, ale osa X bude místo měsíce označovat názvy databází, toto není požadovaný výstup.Přeskočte krok 3 a vložte 2D spojnicový graf výběrem celé tabulky

Výstupní tabulka může mít některé hodnoty NULL. Stává se to proto, že historie zálohování databáze nemusí mít pro daný měsíc žádný záznam pro databázi. To také znamená, že skript odkazuje na velikost zálohy v tabulce historie zálohování, aby sledoval růstový trend. Pokud některá z vašich databází není zahrnuta v plánu zálohování, bude výstupní tabulka stále obsahovat název databáze, ale hodnoty pro všechny měsíce budou NULL

Opravte nadrozměrnou databázi

Pokud výše uvedenou strategii nedodržíte a vaše databáze je nadměrně velká, může to způsobit různé problémy. V takovém případě byste měli najít a SQL Server nástroj pro obnovu souborů efektivně a efektivně vyřešit problém.

Úvod autora:

Neil Varley je odborníkem na obnovu dat DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně opravit problém s Outlookem a excelové softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com

Sdílej nyní:

Komentáře jsou uzavřeny.