2017-04-26 8 views
2

SQL Server 2014を使用しています。サイズは12 GBのデータベースが1つあります。 は、私は次のクエリを使用して、ファイルサイズを確認することができます。これは、.ldfファイルが9ギガバイトで、.mdfファイルは3ギガバイトであることを示している実際のデータと比較してSQL Serverデータベースが大きすぎます

SELECT ((size * 8)/1024), * 
FROM sys.sysfiles 

は、それから私は、実際のテーブルのサイズを確認するには、次のクエリを使用:

SELECT 
    t.NAME AS TableName, 
    i.name as indexName, 
    p.[Rows], 
    SUM(a.total_pages) as TotalPages, 
    SUM(a.used_pages) as UsedPages, 
    SUM(a.data_pages) as DataPages, 
    (SUM(a.total_pages) * 8)/1024 as TotalSpaceMB, 
    (SUM(a.used_pages) * 8)/1024 as UsedSpaceMB, 
    (SUM(a.data_pages) * 8)/1024 as DataSpaceMB 
FROM 
    sys.tables t 
INNER JOIN  
    sys.indexes i ON t.OBJECT_ID = i.object_id 
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id 
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id 
WHERE 
    t.NAME NOT LIKE 'dt%' AND 
    i.OBJECT_ID > 255 AND 
    i.index_id <= 1 
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name, p.[Rows] 
ORDER BY 
    5 desc 

これは、合計サイズがちょうど40メガバイトであることを示しています。

しかし、私たちは.mdfファイルの残りの3 GBを占めているのだろうかと思っています。

mdfファイルとldfファイルで非常に多くの領域を占めるオブジェクトを見つけてください。

ありがとうございました!

+3

フルリカバリモードになっていますか?データベースのメンテナンスはありますか?なぜあなたのクエリの特定のオブジェクトを除外しましたか?合計サイズが必要な場合は、オブジェクトを除外しないでください。トランザクションログのような音はかなり大きく、維持されていません。 –

+1

実際に使用されているデータベースの量を確認してください。これは、データベースのプロパティウィンドウまたは[sp_spaceused](https://docs.microsoft.com/en-us/sql/relational-databases/databases/display-data-and-log-space-information-sql/) for-a-database)ストアドプロシージャ。テーブルが不足しているか、ある時点で多くのデータをロードしてから削除したかのいずれかです。ログファイルのサイズは、それがかなりの時間バックアップされていないことを明確に示しています –

+0

こんにちはショーンランゲ、私はすべてのオブジェクトを含めて、もう一度試しました。それでも同じサイズを示します。データベースリカバリモードは「シンプル」に設定されています。 –

答えて

3

"sp_spaceused"という定義済みのストアドプロシージャを使用して、データベースが使用している容量を確認してください。

USE <database_name> 
EXEC sp_spaceused 

これは、データベース名は最初の行の最初の列に表示されている。このような出力...

enter image description here

を生成します。

なお...

DATABASE_SIZE =予約済みのスペース+未割り当て領域+ログsp_spaceusedをスペース

は、ログ・スペースの量を表示しませんが、これはsp_spaceusedをによって生成された結果から計算することができます。

詳しくは、sp_spaceusedのDataRinger.com pageを参照してください。

このページの次の図は、データベース全体のサイズを構成するさまざまなSQL Serverの領域を示しています。

enter image description here

私は、データベースのトランザクション・ログ・ファイルは、データベース内のスペースのために行方不明を取っているものであると思われます。

"Manage the Size of the Transaction Log File"は、ログファイルに関する情報を提供するMicrosoftのページです。これはあなたのデータベースに役立つかもしれません。

+0

私は "sp_spaceused"を試みましたが、これも同じ結果を返しています。これは約40MBのデータを表示しています。 –

+0

「index_size」列見出しの下に表示された値はどれですか? – JohnH

+0

予約済み\t:65288 KB、データ:57648 KB、index_size:3224 KB、未使用:\t \t 4416 KB –

関連する問題