如何检索数据库的已用大小?

时间:2011-10-28 06:18:58

标签: c# database sql-server-express

在c#中检索(sql)数据库的已用大小的最佳方法是什么? 我可以访问数据库的连接字符串,并假设我也有dbadmin访问数据库。

This地方建议我使用Microsoft.SqlServer.Smo.dll,但是我想知道是否可以使用System.Data本身的Sql *命名空间来执行此操作? (如SqlConnection,DbConnection等)

4 个答案:

答案 0 :(得分:4)

sp_spaceused返回已分配和未使用的空间。 (http://msdn.microsoft.com/en-us/library/ms188776.aspx),从前者中减去后者以获得实际使用的空间。

EXEC sp_spaceused

对于sql server变体。

只需创建一个DbConnection并执行此sproc

how to query sql server database size

答案 1 :(得分:4)

对于附加数据库,您可以从连接中检索文件名。这样你就可以构造.ldf文件名并使用System.IO.File来获取文件大小。

对于'普通'服务器注册的dbs,我不知道。

答案 2 :(得分:4)

您只需查询SQL-Server即可获取该信息:

USE <databasename>;
GO

/* get the database size, including the log file */
exec sp_spaceused;

/* get the size of the table */
exec sp_spaceused <tablename>;

/* the actual database file sizes */
SELECT * FROM sys.database_files;

答案 3 :(得分:2)

我认为通过Sql。*命名空间没有任何直接的方法可以做到这一点,但您可以使用ADO.NET框架来运行sp_spaceused (Transact-SQL)存储过程。

请参阅此问题:how to query sql server database size