【问题标题】:How to catch the output of a DBCC-Statement in a temptable如何在 temptable 中捕获 DBCC 语句的输出
【发布时间】:2023-03-23 16:07:02
【问题描述】:

我在 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);

...但这会引发语法错误...

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    将要运行的语句放入EXEC('')

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

    【讨论】:

      【解决方案2】:

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

      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 的原因是将大小从字节转换为兆字节。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多