web-dev-qa-db-ja.com

ディスク容量の使用

SQL Server 2012でレポートを取得したり、カスタムレポートを作成したりして、使用可能なディスク領域とリストされたドライブの実際のディスク領域を1日2回または1回更新できる方法はありますか?.

クライアントが必要なパターンを確認するには、1か月間のディスク容量の使用状況を確認する必要があるため、これが必要です。

ありがとう!

5
KASQLDBA

クライアントがテスト環境および本番環境内の複数のサーバーを監視できるように、レポートを作成し、実際に警告しました。基本的に、PowerShellステップでSQLエージェントジョブを使用して、ディスク情報(win32_volume)をいくつかのテーブルに挿入します。

次に、PowerShellステップをもう1つ作成して、空き領域が構成済みのしきい値(テーブルに格納されている)内にあるかどうかを確認することにしました。セットアップと書き込みがかなり簡単だったので、このアプローチを採用しました。また、HTMLレポートを電子メールで送信するように記述した方が、T-SQLでコードを作成するよりもコードが簡潔でした。

SQL ServerにDMVがあり、ディスク領域の使用量を取得している(例:sys.dm_os_volume_stats)しかし、上記のPowerShellオプションにより、特定のサーバーで検出されたすべてのドライブを監視できました。ここで、PowerShellを実行するためのプロキシアカウントを作成する必要があり、そのアカウントには適切な権限が必要です。

空きディスク容量に関するHTMLレポート を取得する例。

[〜#〜]編集[〜#〜]

マイクのコメントから、自分のプロファイルに関数があったことに気づきました。彼とは少し異なって書かれていますが、これは私にとってうまくいきました:

function Get-DiskSpace($server,[switch]$all)
{
        $servers = gc C:\Users\smelton\Documents\WindowsPowerShell\OSList.txt
        if ($all)
        {
            foreach ($s in $servers)
            {
                Get-WmiObject -Class Win32_Volume -ComputerName $s |
                    Select-Object @{Label='ServerName';Expression={$s}}, 
                        DriveLetter, 
                        Label, 
                        @{Label='GB Capacity';Expression={"{0:N2}" -f($_.Capacity/1GB)}},
                        @{Label='GB FreeSpace';Expression={"{0:N2}" -f($_.freespace/1GB)}},
                        @{Label='% Free';Expression={"{0:N2}" -f($_.freespace/$_.Capacity)}} |
                    Sort-Object -Property DriveLetter
            } #end foreach
        }
        else
        {
            Get-WmiObject -Class Win32_Volume -ComputerName $server | Where {$_.DriveType -eq 3} |
                Select-Object DriveLetter, Label, @{Label='GB Capacity';Expression={"{0:N2}" -f($_.Capacity/1GB)}},
                    @{Label='GB FreeSpace';Expression={"{0:N2}" -f($_.freespace/1GB)}},
                    @{Label='% Free';Expression={"{0:N2}" -f($_.freespace/$_.Capacity)}} |
                Sort-Object -Property DriveLetter
        } #end if/else
} #end Get-DiskSpace
8
user507

データコレクターオプションを見てください。具体的には、ディスク使用量コレクションセット。データコレクターを使用すると、さまざまな種類の情報(ディスクの使用状況の場合)の収集をスケジュールして、それらをManagement DataWarehouseと呼ばれるものに格納できます。いったんそこに来ると、データのクエリやレポートの作成が簡単になります。これはSQL Server 2008以降の一部です。

組み込みのDisk Usageコレクションセットに必要な情報がない場合は、独自のコレクションセットを作成することもできます。この場合、sys.dm_io_virtual_file_stats(必要なドライブにデータベースファイルが存在する場合)またはその他のカスタムコードを使用して情報をプルできます。

ここでは、開始するためのBOLリンクをいくつか示します。

データコレクターの紹介

データ収集

データコレクターによるSQL Serverのパフォーマンス監視

2
Kenneth Fisher

必要なのは傾向分析なので、これは質問への直接の回答ではありませんが、さまざまなノードレベルでSSMSのレポートをよく理解する必要があります。以前のバージョンよりも大幅に改善されています。個々のテーブルのサイズを示すデータベースレベルのものが1つあります。

管理データウェアハウスも確認してください。

0
Jeff Sacksteder