web-dev-qa-db-ja.com

SQLトランザクションログが使用する領域を見つけるにはどうすればよいですか?

SQL Serverのsp_spaceusedストアドプロシージャは、データベースサイズや未割り当て領域などを見つけるのに役立ちます。ただし、(私が知る限り)トランザクションログの情報は報告しません(SQL Server管理内のデータベースプロパティを確認しません)。 Studioはトランザクションログの情報も提供しません)。

.ldfファイルを見れば、トランザクションログが使用している物理領域を簡単に見つけることができますが、使用されているログファイルの量と未使用の量を確認するにはどうすればよいですか。

5
Sean Earp

私が質問を提出した直後に答えが見つかりました:)

Dbcc sqlperf(logspace)とdbcc loginfoが私の友人のようです。

http://www.mssqltips.com/tip.asp?tip=1225

5
Sean Earp
create table #dbsize 
(Dbname varchar(30),dbstatus varchar(20),Recovery_Model varchar(10) default ('NA'), file_Size_MB decimal(20,2)default (0),Space_Used_MB decimal(20,2)default (0),Free_Space_MB decimal(20,2) default (0)) 
go 

insert into #dbsize(Dbname,dbstatus,Recovery_Model,file_Size_MB,Space_Used_MB,Free_Space_MB) 
exec sp_msforeachdb 
'use [?]; 
  select DB_NAME() AS DbName, 
    CONVERT(varchar(20),DatabasePropertyEx(''?'',''Status'')) ,  
    CONVERT(varchar(20),DatabasePropertyEx(''?'',''Recovery'')),  
sum(size)/128.0 AS File_Size_MB, 
sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB, 
SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS Free_Space_MB  
from sys.database_files  where type=0 group by type' 





go 
select * from #dbsize 

別の方法-MS SQL Management Studioで次のコマンドを実行します。

  • データベースを右クリック
  • タスク
  • シュリンク
  • ファイル

[ファイルタイプ] = [ログ]を選択すると、ファイルサイズと使用可能な空き領域の割合だけが表示されます。

1
Bogdan_Ch

よりGUIアプローチの場合、SQL Management Studioは、データベースのディスクスペース(とりわけ)レポートを作成できます(オブジェクトエクスプローラーでデータベースノードを右クリックし、レポートを選択します)。

このレポートには、最近のファイルのサイズ変更に関する情報も表示されます。

0
Richard

別の方法-perfmonを起動して、次のカウンターを確認します。

  • SQLServer:データベースログファイルサイズ(KB)
  • SQLServer:データベースログファイルの使用サイズ(KB)
  • SQLServer:使用済みログの割合

これらの値はリアルタイムで更新されます。

0
SuperCoolMoss