是否可以确定SQL Server数据库的大小?

时间:2014-09-03 05:48:38

标签: c# sql sql-server

我能够确定C#Winforms程序中硬盘的大小(使用的总空间,可用空间等)。

是否有可能或者有办法确定SQL Server数据库的大小(其中包含表及其值...因此它就像记录一样)它所在的位置在某个硬盘上?

此外,当我想在数据库中更新或添加记录时,是否可能在我的C#表单中自动更新大小(总使用空间,可用空间(数据库内部使用和可用空间......)) ?

2 个答案:

答案 0 :(得分:1)

您应该创建一个存储过程,它将以表格形式提供输出,您可以使用C#读取前端的值 -

只需使用任何名称(如“getDatabaseSizes”

)在数据库中创建存储过程

以下查询 -

SELECT 
        database_name = DB_NAME(database_id)
      , log_size_mb = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
      , row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
      , total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
  FROM sys.master_files WITH(NOWAIT)
  WHERE database_id = DB_ID('[dbname]')
  GROUP BY database_id

然后,您可以从C#代码中读取它以显示在屏幕上(前端)

答案 1 :(得分:1)

试试这个 -

手册:

  • 登录Sql Server右键单击来自Sql Server Studio的数据库
    单击属性
    您可以在常规选项卡中查看数据库的大小 MB的

    或者

查询:

选项-1:

SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'AdventureWorks'
GO

或尝试此查询: -

选项-2:

SELECT 
      database_name = DB_NAME(database_id)
    , log_size_mb = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
    , row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
    , total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
FROM sys.master_files WITH(NOWAIT)
WHERE database_id = DB_ID('[yourDBName]') -- for current db 
GROUP BY database_id

ref link:stackoverflow.com/questions/18014392/ 和 http://blog.sqlauthority.com/2010/02/08/sql-server-find-the-size-of-database-file-find-the-size-of-log-file/