как запросить размер базы данных сервера sql - PullRequest
0 голосов
/ 26 января 2010

При написании кода на C #, если мне удастся получить SqlConnection, есть ли способ выполнить запрос для получения размера базы данных?

Я искал в интернете, кажется, что sp_spaceused может бытьиспользуется, но это не таблица, это процедура.

Могу ли я запросить процедуру?

Ответы [ 2 ]

5 голосов
/ 26 января 2010

Следующий код (взят из 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();
    }
}
0 голосов
/ 23 октября 2012

для одной таблицы вы можете использовать: так сделать sp_spaceused с использованием 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"]);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...