Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查询sql server数据库大小_C#_Sql Server_Tsql - Fatal编程技术网

C# 如何查询sql server数据库大小

C# 如何查询sql server数据库大小,c#,sql-server,tsql,C#,Sql Server,Tsql,在编写C代码时,如果我能够获得SqlConnection, 有没有办法执行查询以获取数据库的大小 我在互联网上搜索过,似乎sp_spaceused可以使用, 但这不是一张桌子,而是一个程序 我可以查询一个过程吗?以下代码取自控制台应用程序testharness,使用ADO.NET调用sp_spaceused过程,然后迭代生成的datareader以获得db大小 这是可行的,但我不能说没有比这更有效或直接的方法来实现你想要的 另一种实现方式是将sp_spaceused过程包装在您自己的过程中,该过

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

我在互联网上搜索过,似乎sp_spaceused可以使用, 但这不是一张桌子,而是一个程序


我可以查询一个过程吗?

以下代码取自控制台应用程序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();
    }
}

以下代码取自控制台应用程序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();
    }
}

对于单个表格,您可以使用: 因此,要执行sp_space,请使用c对单个表执行此操作 这将有助于:

        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"]);
            }
        }
    }

对于单个表格,您可以使用: 因此,要执行sp_space,请使用c对单个表执行此操作 这将有助于:

        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"]);
            }
        }
    }