如何在temptable中捕获DBCC-Statement的输出

时间:2011-05-10 07:46:58

标签: sql-server tsql sql-server-2000

我在SQL-Server上尝试了以下内容:

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?

2 个答案:

答案 0 :(得分:23)

将语句放在EXEC('')

insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS) 
EXEC('DBCC SQLPERF(LOGSPACE);')

答案 1 :(得分:1)

这并没有直接回答这个问题,但它确实回答了问题的意图:大概,你想要一种简单的方法来找到日志文件的当前大小:

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 Server中的页面大小为8192字节。

我们除以1024,然后再除以1024的原因是将大小从字节转换为兆字节。