SSMS、T-SQL、システムテーブル… あなたに合った方法は? SQL Server テーブルのディスク容量を確認する方法 4選
SQL Serverでテーブルが使用しているディスク容量を確認する方法
SQL Server Management Studio (SSMS) を使用する
SSMSは、SQL Serverを管理するためのツールです。SSMSを使用してテーブルのディスク容量を確認するには、以下の手順に従います。
- SSMSを起動し、接続するSQL Serverインスタンスを選択します。
- オブジェクトエクスプローラーで、データベースを展開し、「テーブル」フォルダを選択します。
- 確認したいテーブルを右クリックし、「プロパティ」を選択します。
- 「プロパティ」ウィンドウで、「ファイル」ページを選択します。
- 「使用領域」と「空き領域」の値を確認します。
Transact-SQLクエリを使用する
Transact-SQL (T-SQL) は、SQL Serverでデータベースを操作するための言語です。T-SQLクエリを使用してテーブルのディスク容量を確認するには、以下のクエリを実行します。
USE <データベース名>;
SELECT
name AS テーブル名,
SUM(reserved_page_count * 8) AS 使用ディスク容量KB,
SUM(total_pages * 8) AS 合計ディスク容量KB
FROM sys.tables
WHERE name = '<テーブル名>';
このクエリは、指定されたテーブルの合計ディスク容量と使用ディスク容量を表示します。
システムテーブルを使用する
SQL Serverには、データベースに関する情報を格納するシステムテーブルがあります。これらのテーブルを使用して、テーブルのディスク容量を確認することもできます。
USE <データベース名>;
SELECT
a.name AS テーブル名,
b.total_pages * 8 AS 使用ディスク容量KB
FROM sys.tables a
INNER JOIN sys.indexes b ON a.object_id = b.object_id
WHERE a.name = '<テーブル名>';
拡張機能を使用する
SSMSには、テーブルのディスク容量を確認する機能を提供する拡張機能がいくつかあります。これらの拡張機能を使用すると、より詳細な情報を表示したり、さまざまな方法で情報を表示したりすることができます。
SQL Serverでテーブルが使用しているディスク容量を確認するには、いくつかの方法があります。上記の方法の中から、自分に合った方法を選択してください。
Transact-SQLクエリ
USE AdventureWorks2019;
SELECT
name AS テーブル名,
SUM(reserved_page_count * 8) AS 使用ディスク容量KB,
SUM(total_pages * 8) AS 合計ディスク容量KB
FROM sys.tables
WHERE name IN ('ProductCategory', 'ProductSubcategory', 'Product');
システムテーブルを使用する
USE AdventureWorks2019;
SELECT
a.name AS テーブル名,
b.total_pages * 8 AS 使用ディスク容量KB
FROM sys.tables a
INNER JOIN sys.indexes b ON a.object_id = b.object_id
WHERE a.name IN ('ProductCategory', 'ProductSubcategory', 'Product');
このクエリは、AdventureWorks2019
データベースのProductCategory
、ProductSubcategory
、Product
テーブルの使用ディスク容量を表示します。
注意事項
- 上記のクエリは、テーブルのデータファイルのみのディスク容量を表示します。テーブルのインデックスやその他のオブジェクトによって使用されているディスク容量は含まれません。
- テーブルのディスク容量は、データの量やインデックスの数などによって変化します。
SQL Serverでテーブルが使用しているディスク容量を確認するその他の方法
PowerShellを使用する
Import-Module SqlServer
$server = 'localhost'
$database = 'AdventureWorks2019'
$table = 'ProductCategory'
$tableInfo = Get-SqlTable -ServerInstance $server -DatabaseName $database -TableName $table
Write-Host "テーブル名: $($tableInfo.Name)"
Write-Host "使用ディスク容量: $($tableInfo.TotalPages * 8) KB"
Write-Host "合計ディスク容量: $($tableInfo.ReservedPages * 8) KB"
サードパーティ製のツールを使用する
代表的なツール
- ApexSQL
- Redgate SQL Monitor
- Idera SQLdm
DMVを使用する
SELECT
a.name AS テーブル名,
b.total_pages * 8 AS 使用ディスク容量KB
FROM sys.tables a
INNER JOIN sys.dm_db_index_usage_stats b ON a.object_id = b.object_id
WHERE a.name = '<テーブル名>';
sql-server