如何查询sql server数据库大小

joj*_*ojo 0 c# t-sql sql-server

在编写C#代码时,如果我可以设法获得SqlConnection,有没有办法执行查询来获取数据库的大小?

我搜索了互联网,似乎可以使用"sp_spaceused",但它不是一个表,它是一个程序.

我可以查询程序吗?

Dav*_*all 5

以下代码(取自控制台应用程序testharness)使用ADO.NET调用sp_spaceused过程,然后迭代生成的datareader以获取db大小.

这是有效的,但我不能说没有更有效或直接的方式来实现你想要的.

一种替代实现方式是将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();
    }
}
Run Code Online (Sandbox Code Playgroud)