我能够确定C#Winforms程序中硬盘的大小(使用的总空间,可用空间等)。
是否有可能或者有办法确定SQL Server数据库的大小(其中包含表及其值...因此它就像记录一样)它所在的位置在某个硬盘上?
此外,当我想在数据库中更新或添加记录时,是否可能在我的C#表单中自动更新大小(总使用空间,可用空间(数据库内部使用和可用空间......)) ?
答案 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/