在编写C#代码时,如果我可以设法获得SqlConnection,那么有没有办法执行查询来获取数据库的大小?如何查询sql server数据库大小
我搜索了互联网,似乎可以使用“sp_spaceused”,但它不是表格,它是一个程序。
我可以查询程序吗?
在编写C#代码时,如果我可以设法获得SqlConnection,那么有没有办法执行查询来获取数据库的大小?如何查询sql server数据库大小
我搜索了互联网,似乎可以使用“sp_spaceused”,但它不是表格,它是一个程序。
我可以查询程序吗?
以下代码(取自控制台应用程序testharness)使用ADO.NET调用sp_spaceused过程,然后迭代生成的数据读取器以获取数据库大小。
这是有效的,但我不能说没有更高效或直接的方式来实现你想要的。
一种替代实现方法是将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();
}
}
为单一的表,你可以使用: 这样做使用C#为单一的表 注释sp_spaceused这将工作:
public static void GetTableSpaceUsed(string tableName)
{
SqlConnection Conn = new SqlConnection(SqlHelper.GetConnection());
SqlCommand spaceused = new SqlCommand("sp_spaceused", Conn);
spaceused.CommandType = CommandType.StoredProcedure;
spaceused.Parameters.AddWithValue("@objname", tableName);
Conn.Open();
SqlDataReader reader = spaceused.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("Name: " + reader["name"]);
Console.WriteLine("Rows: " + reader["rows"]);
Console.WriteLine("Reserved: " + reader["reserved"]);
Console.WriteLine("Data: " + reader["data"]);
Console.WriteLine("Index size: " + reader["index_size"]);
}
}
}