Как SSMS получает использование журнала транзакций? - PullRequest
0 голосов
/ 14 января 2010

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

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

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

1 Ответ

1 голос
/ 14 января 2010

Захват профиля в моем собственном отчете об использовании диска 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''
...