Как SSMS получает использование журнала транзакций?

Когда вы щелкаете правой кнопкой мыши на базе данных, Отчеты... Использование диска, я получаю отчет. Поскольку у меня ограниченные разрешения, я получаю только верхнюю часть, которая показывает "Использование пространства журнала транзакций" - только это число может быть полезным для меня.

Однако позже я получаю сообщения об ошибках о том, что у меня нет разрешений на запуск DBCC showfilestats, и я также определенно не имею доступа к sys.dm_os_performance_counters или DBCC SQLPERF('logspace').

Если бы я мог просто получить этот верхний номер, это было бы полезно. К сожалению, я не могу запустить профилировщик, конечно, поэтому я понятия не имею, какую команду или запрос он выдает, чтобы получить эти данные...

1 ответ

Решение

Захват профиля моего собственного отчета об использовании диска SSMS показывает DBCC SQLPERF(LOGSPACE):

exec sp_executesql @stmt=N'begin try 
declare @tran_log_space_usage table( 
        database_name sysname
,       log_size_mb float
,       log_space_used float
,       status int
); 

insert into @tran_log_space_usage 
exec(''DBCC SQLPERF ( LOGSPACE )'') ; 

select 1 as l1
,       1 as l2
,       log_size_mb as LogSizeMB
,       cast( convert(float,log_space_used) as decimal(10,1)) as SpaceUsage
,       ''Used'' as UsageType 
from @tran_log_space_usage 
where database_name = DB_NAME() 
UNION 
select 1 as l1 
,       1 as l2
,       log_size_mb
,       cast(convert(float,(100-log_space_used)) as decimal(10,1)) as SpaceUsage
,       ''Unused'' as UsageType 
from @tran_log_space_usage 
where database_name = DB_NAME();  
end try 
begin catch 
select -100 as l1
,       ERROR_NUMBER() as l2
,       ERROR_SEVERITY() as LogSizeMB 
,       ERROR_STATE() as SpaceUsage 
,       ERROR_MESSAGE() as UsageType 
end catch',@params=N''
Другие вопросы по тегам