在c#中检索(sql)数据库的已用大小的最佳方法是什么? 我可以访问数据库的连接字符串,并假设我也有dbadmin访问数据库。
This地方建议我使用Microsoft.SqlServer.Smo.dll,但是我想知道是否可以使用System.Data本身的Sql *命名空间来执行此操作? (如SqlConnection,DbConnection等)
答案 0 :(得分:4)
sp_spaceused
返回已分配和未使用的空间。 (http://msdn.microsoft.com/en-us/library/ms188776.aspx),从前者中减去后者以获得实际使用的空间。
EXEC sp_spaceused
对于sql server变体。
只需创建一个DbConnection并执行此sproc
答案 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)存储过程。