sql >> データベース >  >> RDS >> Sqlserver

T-SQLを使用してSQLServerのデータベースのサイズを確認する6つの方法

    SSMSなどのGUIツールを使用してデータベースを管理している場合は、GUIを介してクリックすることで、データベースのサイズを簡単に確認できます(データベースを右クリックし、[レポート]をポイントします 、次に標準レポート 次に、[ディスク使用量]をクリックします 。

    ただし、T-SQLを使用してデータベースを管理する場合は、この情報を返すクエリを実行する必要があります。

    この記事では、T-SQLを使用してSQLServerデータベースのサイズを確認する6つの方法を紹介します。

    sp_spaceusedストアドプロシージャ

    これは、現在のデータベースのテーブル、インデックス付きビュー、またはService Brokerキューによって使用されている行数、予約されているディスクスペース、およびディスクスペースを表示するか、データベース全体によって予約および使用されているディスクスペースを表示するシステムストアドプロシージャです。

    使用するには、関連するデータベースに切り替えて手順を実行するだけです。このように:

    USE WideWorldImporters;
    EXEC sp_spaceused;

    結果:

    database_name       database_size  unallocated space
    ------------------  -------------  -----------------
    WideWorldImporters  3172.00 MB     2511.76 MB       
    
    1 row(s) returned
    
    reserved   data       index_size  unused 
    ---------  ---------  ----------  -------
    573688 KB  461728 KB  104120 KB   7840 KB
    
    1 row(s) returned

    これにより、関連情報を提供する2つの結果セットが返されます。

    データベース内の特定のオブジェクトに関するデータを返すためのオブジェクト名を指定することもできます。この場合、1つの結果セットのみが返されます。

    例:

    USE WideWorldImporters;
    EXEC sp_spaceused N'Application.Cities';

    結果:

    name    rows                  reserved  data     index_size  unused
    ------  --------------------  --------  -------  ----------  ------
    Cities  37940                 4880 KB   3960 KB  896 KB      24 KB

    この例では、Citiesに関する情報を返します。 テーブルのみ。

    sp_helpdbストアドプロシージャ

    別のシステムストアドプロシージャはsp_helpdbです。 。

    これを呼び出す例は次のとおりです。

    EXEC sp_helpdb N'WideWorldImporters';

    結果:

    name          fileid  filename          filegroup  size        maxsize        growth    usage    
    ------------  ------  ----------------  ---------  ----------  -------------  --------  ---------
    WWI_Primary   1       /data/WWI.mdf     PRIMARY    1048576 KB  Unlimited      65536 KB  data only
    WWI_Log       2       /data/WWI.ldf     null       102400 KB   2147483648 KB  65536 KB  log only 
    WWI_UserData  3       /data/WWI_UD.ndf  USERDATA   2097152 KB  Unlimited      65536 KB  data only
    

    この場合、データベースの名前を引数として渡します。 sp_helpdbを呼び出すこともできます 引数を提供せずに。これを行うと、sys.databases内のすべてのデータベースに関する情報が返されます。 カタログビュー。

    sp_databasesストアドプロシージャ

    さらに別のオプションは、sp_databasesです。 システムストアドプロシージャ。このストアドプロシージャには、SQL Serverのインスタンスに存在するデータベース、またはデータベースゲートウェイを介してアクセスできるデータベースが一覧表示されます。

    実行方法は次のとおりです。

    EXEC sp_databases;

    結果:

    DATABASE_NAME       DATABASE_SIZE  REMARKS
    ------------------  -------------  -------
    master              6848           null   
    model               16384          null   
    msdb                15616          null   
    Music               16384          null   
    Nature              16384          null   
    Solutions           47104          null   
    tempdb              16384          null   
    Test                16384          null   
    WideWorldImporters  3248128        null   
    world               16384          null   
    WorldData           16384          null

    sys.master_filesビュー

    上記のストアドプロシージャは、sys.master_filesにクエリを実行します 見る。したがって、別の方法は、ビューに直接移動して、列を選択することです。

    SELECT
        name,
        size,
        size * 8/1024 'Size (MB)',
        max_size
    FROM sys.master_files
    WHERE DB_NAME(database_id) = 'WideWorldImporters';
    

    結果:

    name          size    Size (MB)  max_size 
    ------------  ------  ---------  ---------
    WWI_Primary   131072  1024       -1       
    WWI_Log       12800   100        268435456
    WWI_UserData  262144  2048       -1       
    

    この場合、別々にリストされているため、各データファイルとログファイルのサイズを確認できます。また、sizeで計算を実行していることにも気付くでしょう。 値をメガバイト(MB)に変換する列。

    sys.database_filesビュー

    sys.database_filesというシステムビューもあります 。このビューを使用して、前の例と同じ情報を返すことができます:

    USE WideWorldImporters;
    SELECT
        name,
        size,
        size * 8/1024 'Size (MB)',
        max_size
    FROM sys.database_files;
    

    結果:

    name          size    Size (MB)  max_size 
    ------------  ------  ---------  ---------
    WWI_Primary   131072  1024       -1       
    WWI_Log       12800   100        268435456
    WWI_UserData  262144  2048       -1       
    

    ウィンドウ関数を使用する

    前の2つの例の潜在的な問題の1つは、各ファイルのサイズが個別にリストされていることです。これは、達成したいことに応じて、プラスまたはマイナスと見なされる可能性があります。

    また、このページの最初の3つの解決策は、すべてのファイルの合計を提供するだけであり、個々のファイルとそのサイズをリストしていないため、問題があると主張することもできます。

    したがって、個々のファイルのサイズ、の両方を確認したい場合はどうでしょうか。 各データベースのすべてのファイルの合計?

    OVERを使用できます まさにそれを行うための条項。

    次に例を示します:

    SELECT
        d.name AS 'Database',
        m.name AS 'File',
        m.size,
        m.size * 8/1024 'Size (MB)',
        SUM(m.size * 8/1024) OVER (PARTITION BY d.name) AS 'Database Total',
        m.max_size
    FROM sys.master_files m
    INNER JOIN sys.databases d ON
    d.database_id = m.database_id;

    結果:

    Database            File             Size (MB)  Database Total
    ------------------  ---------------  ---------  --------------
    master              master           4          6             
    master              mastlog          2          6             
    model               modeldev         8          16            
    model               modellog         8          16            
    msdb                MSDBData         14         14            
    msdb                MSDBLog          0          14            
    Music               Music            8          16            
    Music               Music_log        8          16            
    Nature              Nature           8          16            
    Nature              Nature_log       8          16            
    Solutions           Solutions        8          46            
    Solutions           Solutions_log    8          46            
    Solutions           Solutions_dat_2  10         46            
    Solutions           Solutions_dat_3  10         46            
    Solutions           Solutions_log_2  10         46            
    tempdb              tempdev          8          16            
    tempdb              templog          8          16            
    WideWorldImporters  WWI_Primary      1024       3172          
    WideWorldImporters  WWI_Log          100        3172          
    WideWorldImporters  WWI_UserData     2048       3172          
    world               world            8          16            
    world               world_log        8          16       
    

    これにより、各データベース、各データベースのファイル、各ファイルのファイルサイズ、および各データベースのすべてのファイルの合計が一覧表示されます。これには、各データベース(およびそれらの合計サイズ)が複数回(ファイルごとに1回)リストされている必要があります。


    1. SQLServer2008のサポートは終了します。それで?

    2. シャーロットでのPASSサミットに参加しますか?

    3. MariaDBでのMONTH()のしくみ

    4. mysqlデータベース全体を見つけて置き換えます