SSMS、T-SQL、システムテーブル… あなたに合った方法は? SQL Server テーブルのディスク容量を確認する方法 4選

2024-04-06

SQL Serverでテーブルが使用しているディスク容量を確認する方法

SQL Server Management Studio (SSMS) を使用する

SSMSは、SQL Serverを管理するためのツールです。SSMSを使用してテーブルのディスク容量を確認するには、以下の手順に従います。

  1. SSMSを起動し、接続するSQL Serverインスタンスを選択します。
  2. オブジェクトエクスプローラーで、データベースを展開し、「テーブル」フォルダを選択します。
  3. 確認したいテーブルを右クリックし、「プロパティ」を選択します。
  4. 「プロパティ」ウィンドウで、「ファイル」ページを選択します。
  5. 「使用領域」と「空き領域」の値を確認します。

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データベースのProductCategoryProductSubcategoryProductテーブルの使用ディスク容量を表示します。

注意事項

  • 上記のクエリは、テーブルのデータファイルのみのディスク容量を表示します。テーブルのインデックスやその他のオブジェクトによって使用されているディスク容量は含まれません。
  • テーブルのディスク容量は、データの量やインデックスの数などによって変化します。



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


CONST、SET、DECLARE LOCAL、#variable、PARAMETER:T-SQLにおける定数変数の作り方

CONST キーワードを使用して、変数をローカル変数として定義し、その変数に値を代入することができます。この方法で定義された変数は、そのスコープ内でのみ使用でき、一度代入された値を変更することはできません。SET ステートメントを使用して、変数に値を代入することができます。SET ステートメントで代入された変数は、ローカル変数として扱われます。...


SQL Server パフォーマンス向上: 読み取りクエリとトランザクションの最適化

SQL Server トランザクションは、一連のデータベース操作を単一のユニットとして扱い、原子性、一貫性、分離性、耐久性 (ACID) を保証します。読み取りクエリは、データの状態を読み出すだけの操作です。疑問:読み取りクエリにもトランザクションが必要でしょうか?...


EXCEPT、NOT EXISTS、FULL OUTER JOIN:データ比較のためのSQLクエリ

このガイドを理解するには、以下の知識が必要です。SQLの基本的な構文2つのテーブルの構造 (列名、データ型など)2つのテーブルの違いを返すには、以下の3つの方法があります。EXCEPT演算子は、2つのテーブルの行を比較し、一方のテーブルにのみ存在する行を返します。...


SQL Server にデータを挿入して ID を取得する:C# による 3 つのベストプラクティス

SCOPE_IDENTITY() 関数を使用するこの方法は、最もシンプルで汎用性の高い方法です。以下のコード例のように、INSERT ステートメントを実行した後、SCOPE_IDENTITY() 関数を使用して、挿入された ID を取得します。...


PythonでSQL Serverストアドプロシージャ結果をPandasデータフレームに格納!データサイエンスへの第一歩

前提条件このチュートリアルを実行するには、次のものが必要です。Python がインストールされていることpandas ライブラリがインストールされていることSQL Server データベースへの接続手順必要なライブラリをインポートするSQL Server に接続する...