Как преобразовать размер базы данных из мегабайтов в байты или наоборот?
По сути, я создаю приложение для репликации, и мне просто нужно выяснить размер базы данных и сколько свободного места у меня есть на диске D:\.
Если размер базы данных больше, чем свободное пространство, то мне нужно предупредить пользователя.
Это то, что я до сих пор:
Сначала я узнаю, сколько свободного места на диске D.
DriveInfo di = new DriveInfo(@"D:\");
if (di.IsReady)
{
freeSpace = di.TotalFreeSpace;
}
Затем я получаю размер базы данных, которую собираюсь скопировать:
dbSize = Database.GetDatabaseSize(ddlPublisherServer.Text, ddlPublisherDatabase.Text);
Вот метод, который получает размер БД. Я не знаю, есть ли лучший способ сделать это, но размер идет со строкой "МБ", поэтому мне нужно удалить ее.
public static long GetDatabaseSize(string server, string database)
{
string finalConnString = Properties.Settings.Default.rawConnectionString.Replace("<<DATA_SOURCE>>", server).Replace("<<INITIAL_CATALOG>>", database);
using (SqlConnection conn = new SqlConnection(finalConnString))
{
using (SqlCommand cmd = new SqlCommand("sp_spaceused", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery();
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
using (DataSet ds = new DataSet())
{
da.Fill(ds);
var spaceAvailable = ds.Tables[0].Rows[0][1].ToString();
string freeSpace = spaceAvailable.Remove(spaceAvailable.Length - 3, 3);
return Convert.ToInt64(freeSpace);
}
}
}
}
}
Мой вопрос сейчас -
Как мне преобразовать байты в мегабайты, чтобы я мог сравнить размер БД и свободное место на диске?
Это то, что у меня есть, но это мегабайты и байты, поэтому мне нужно сделать преобразование здесь.
if (dbSize > freeSpace)
{
ClientScript.RegisterStartupScript(this.GetType(), "Insufficient Space", "alert('The database size is greater than the available space on the drive. Please make some room for the database in D drive of the subscriber server.');", true);
}
2 ответа
Байт в мегабайты = Bytes / (1024 * 1024)
Мегабайты в байты = Megabytes * (1024 * 1024.0)
Обязательно учитывайте целочисленное деление, поэтому 1024.0
поэтому используется число с плавающей запятой.
В килобайтах содержится 1024 байта, а в мегабайте - 1024 килобайта. Так что умножьте свои мегабайты на 1024 * 1024 (чтобы получить байты). Или же разделите ваши байты на 1024 * 1024 (чтобы получить мегабайты).