Ответ 1
Поместите оператор, который будет выполняться внутри EXEC('')
insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS)
EXEC('DBCC SQLPERF(LOGSPACE);')
Я попробовал следующее на SQL-сервере:
create table #TmpLOGSPACE(
DatabaseName varchar(100)
, LOGSIZE_MB decimal(18, 9)
, LOGSPACE_USED decimal(18, 9)
, LOGSTATUS decimal(18, 9))
insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS)
DBCC SQLPERF(LOGSPACE);
... но это вызывает синтаксическую ошибку...
Любые sugestions?
Поместите оператор, который будет выполняться внутри EXEC('')
insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS)
EXEC('DBCC SQLPERF(LOGSPACE);')
Это напрямую не отвечает на вопрос, но отвечает на цель вопроса: предположительно, вам нужен простой способ найти текущий размер файла журнала:
SELECT size*8192.0/1024.0/1024.0 as SizeMegabytes
FROM sys.database_files
WHERE type_desc = 'LOG'
-- If the log file size is 100 megabytes, returns "100".
Причина, по которой мы умножаем 8192, заключается в том, что размер страницы на SQL-сервере составляет 8192 байта.
Причина, по которой мы делим на 1024, а затем на 1024, - это преобразовать размер от байтов в мегабайты.