Экспорт и импорт бэкапа БД

Делаю приложение для управления БД SQL Server.Мне нужно сделать кнопки импорта и экспорта бэкапов БД. Нашел примеры для MySql, но не знаю, как сделать похожее для SQL Server. В SQL Server бэкап имеет расширение .bak, а не .sql. SQlConnection я знаю как сделать:

SqlConnection connection = new SqlConnection(@"Data Source=LAPTOP-P14D9V4Q; Initial Catalog=Library; Integrated Security=True");

А вот как SQLBackup сделать аналогичный не знаю.

  private void Import_Click(object sender, RoutedEventArgs e)
            {
                string file = @"C:\Users\Roman 
    Bulygin\RiderProjects\WpfApplication1\backup.sql";
                using (var conn = DataBaseConnect.GetDBConnection())
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        using (MySqlBackup mb = new MySqlBackup(cmd))
                        {
                            try
                            {
                                cmd.Connection = conn;
                                conn.Open();
                                mb.ImportFromFile(file);
                                conn.Close();
                              
                            }
                            catch (Exception exception)
                            {
                                MessageBox.Show(exception.Message);
                                throw;
                            }
                        }
                    }
                }
    
            }
    
            private void Export_Click(object sender, RoutedEventArgs e)
            {
                string file = @"C:\Users\Roman 
    Bulygin\RiderProjects\WpfApplication1\backup.sql";
                using (var conn = DataBaseConnect.GetDBConnection())
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        using (MySqlBackup mb = new MySqlBackup(cmd))
                        {
                            try
                            {
                                cmd.Connection = conn;
                                conn.Open();
                                mb.ExportToFile(file);
                                conn.Close();
                            }
                            catch (Exception exception)
                            {
                                MessageBox.Show(exception.Message);
                                throw;
                            }
                        }
                    }
                }
    
            }
        }

Ответы (1 шт):

Автор решения: aepot

Забэкапить легко

using var connection = new SqlConnection(connectionString);
string dbName = "MyDatabase";
string path = "mydatabase.bak":
var query = $"BACKUP DATABASE {dbName} TO DISK = N'{path}'";
using var command = new SqlCommand(query, connection);
connection.Open();
command.ExecuteNonQuery();

А вот восстановление бэкапа это равносильно удалению из базы всех существующих в ней данных, и замене на данные из бэкапа. Я крайне не рекомендую это действие автоматизировать. Это действие надо выполнять крайне внимательно и только вручную.

Документация по восстановлению бэкапа используя TSQL запрос есть здесь. А запрос будет выглядеть как-то так RESTORE DATABASE {dbName} FROM DISK = N'{path}', но там куча опций и как правильно, я не разобрался.

→ Ссылка