Le code suivant (extrait d'un testharness d'application de console) appelle la procédure sp_eus utilisant ADO.NET, puis itère le lecteur de données résultant pour obtenir la taille de la base de données.
Cela fonctionne, mais je ne peux pas dire qu'il n'y a pas un moyen plus efficace ou plus direct de réaliser ce que vous voulez.
Une implémentation alternative serait d'enrouler la procédure sp_spaceused dans votre propre procédure qui donne les données exactes dont vous avez besoin en tant que valeur de retour scalaire.
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();
}
}