Следующий код (взят из testharness консольного приложения) вызывает процедуру sp_spaceused с использованием ADO.NET, а затем выполняет итерацию получающегося устройства чтения данных, чтобы получить размер БД.
Это работает, но я не могу сказать, что не существует более эффективного или прямого способа достичь того, чего вы хотите.
Одной из альтернативных реализаций было бы включение процедуры sp_spaceused в вашу собственную процедуру, которая дает точные данные, которые вам нужны, как скалярное возвращаемое значение.
class Program
{
static void Main(string[] args)
{
string strCount;
SqlConnection Conn = new SqlConnection
("Data Source=ServerName;integrated " +
"Security=sspi;initial catalog=TestingDB;");
SqlCommand testCMD = new SqlCommand
("sp_spaceused", Conn);
testCMD.CommandType = CommandType.StoredProcedure;
Conn.Open();
SqlDataReader reader = testCMD.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("Name: " + reader["database_name"]);
Console.WriteLine("Size: " + reader["database_size"]);
}
}
Console.ReadLine();
}
}