監視する方法 SQL Server TSQLとExcelを使用したデータベースの拡張

今すぐ共有:

データベースの増大を監視することは、サーバーのリソースを計画する際の重要な要素です。 このスクリプトを使用して、理解しやすいデータベース成長レポートを作成します

データベースの増加を監視する必要がある理由

SQLデータベース管理者であり、「SQL Server キータスクリストの「データベース容量計画」を選択すると、サーバー上のデータベースがすぐにディスク容量をいっぱいにすることを確認できます。 SQLデータベースのサイズと増加を追跡することは、キャパシティプランニングの主要なタスクのXNUMXつです。 これにより、データベースを拡張するための十分なスペースがディスク上に確保されます。

SQLスクリプトと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:シートの最初の2行を選択し、XNUMXD折れ線グラフを挿入します。

これにより、選択したデータベースのトレンドチャートが作成されます。 グラフでは、X軸は月を示し、Y軸はGB単位のデータベースサイズを示します。シートの最初の2行を選択し、XNUMXD折れ線グラフを挿入します

ステップ4:「プラス」記号をドラッグしてデータ全体を選択します。

これにより、チャート上のすべてのデータベースの傾向が表示されます。データ全体を選択

チャート上のすべてのデータベースの傾向を表示する

手順3をスキップし、テーブル全体を選択して2D折れ線グラフを挿入すると、グラフは表示されますが、X軸は月ではなくデータベース名を示します。これは必須の出力ではありません。手順3をスキップし、テーブル全体を選択して2D折れ線グラフを挿入します

出力テーブルにNULL値が含まれている可能性があります。 これは、データベースのバックアップ履歴にその特定の月のデータベースのレコードがない可能性があるために発生します。 また、スクリプトがバックアップ履歴テーブルのバックアップサイズを参照して、増加傾向を追跡することも意味します。 データベースのいずれかがバックアッププランに含まれていない場合、出力テーブルにはデータベース名が保持されますが、すべての月の値はNULLになります

特大データベースを修正

過去に上記の戦略に従わず、データベースのサイズが大きすぎると、さまざまな問題が発生する可能性があります。 そのような場合、あなたは見つけたほうがいいです SQL Server ファイル回復ツール 問題を効果的かつ効率的に解決するため。

著者紹介:

Neil Varleyは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 Outlookの問題を修復する と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。