代码之家  ›  专栏  ›  技术社区  ›  Cade Roux

SSMS如何获取事务日志使用率?

  •  0
  • Cade Roux  · 技术社区  · 14 年前

    当您右键单击数据库,报告…磁盘使用情况时,我会得到一个报告。因为我的权限有限,所以我只能得到顶部部分,显示“事务日志空间使用情况”-仅此数字对我就有用。

    但是,稍后我会收到关于没有运行dbc showfilestats的权限的错误消息,而且我绝对没有访问sys.dm_os_performance_counters或dbc sqlperf(“logspace”)的权限。

    如果我能得到最上面的数字,那就很有用了。不幸的是,我无法运行分析器,所以我不知道它发出什么命令或查询来获取数据…

    1 回复  |  直到 14 年前
        1
  •  1
  •   Remus Rusanu    14 年前

    “Profiler Capture of my own SSMS disk usage”报告显示 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''