【问题标题】:Find size of multiple databases in SQL Server 2005在 SQL Server 2005 中查找多个数据库的大小
【发布时间】:2009-05-29 18:46:50
【问题描述】:

我想知道是否有一条 sql 语句来获取服务器上所有数据库的当前大小,而不是右键单击并转到每个数据库的属性。

【问题讨论】:

    标签: sql-server database sql-server-2005 size


    【解决方案1】:

    如果你可以使用存储过程,这应该可以工作:

    exec sp_msforeachdb 'use ? exec sp_spaceused'
    

    【讨论】:

    • 虽然这将为每个看起来有点混乱的数据库返回一个结果集。我更喜欢使用我的答案,它给出了一个 nice 表。
    【解决方案2】:

    查看sys.master_files 表。

    此查询将为您提供实例中所有内容的总大小:

    SELECT SUM(size*8192.0) AS totalsize
    FROM sys.master_files;
    

    【讨论】:

      【解决方案3】:

      最简单的方法是使用:

      exec [sys].[sp_databases]
      go
      

      这会产生类似的东西:

      Name        Size  Remarks
      mydatabase1 29888 NULL
      mydatabase2 13760 NULL
      mydatabase3 11776 NULL
      master      5376  NULL
      model       3008  NULL
      msdb        7616  NULL
      tempdb      2560  NULL
      

      对于与数据库关联的事务日志的大小,请使用:

      dbcc sqlperf(logspace)
      go
      

      这会产生类似的东西:

      Name        Log Size (MB) Log Space Used (%) Status
      master      1.242188      50.9434            0
      tempdb      0.7421875     61.25              0
      model       0.7421875     38.94737           0
      msdb        1.992188      35.88235           0
      mydatabase1 5.554688      18.55661           0
      mydatabase2 2.742188      32.9594            0
      mydatabase3 8.992188      26.58015           0
      

      【讨论】:

      • 嘿 thomas,有没有办法直接以 MB 为单位格式化第一个查询的输出?非常感谢!
      【解决方案4】:
      exec sp_helpdb
      

      在一张漂亮的表中列出服务器上所有数据库的数据大小、所有者、创建日期等。

      如果您想深入研究特定数据库以查看可以使用的各个表大小

      use MyFunkyDb
      go
      EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]'
      

      【讨论】:

        猜你喜欢
        • 2010-10-11
        • 2010-12-02
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多