Как можно сделать backup/restore базы данных MSSQL программно на C#? Пользователь выбирает место сохранения (например, флешку) и база сохраняется.
Так
public void BackupDB()
{
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = String.Format("DataBase_{0}", DateTime.Now.ToString("yyyy-MM-dd"));
dlg.DefaultExt = ".bak";
dlg.Filter = "Базы данных (*.bak)|*.bak|Все файлы (*.*)|*.*";
if (dlg.ShowDialog() == true)
{
string filename = dlg.FileName;
using (var conn = new System.Data.SqlClient.SqlConnection(_сonnectionString))
{
var query = String.Format("BACKUP DATABASE MYDB TO DISK='{0}'", filename);
using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn))
{
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
}
не получается.
Пробовал вместо полного пути подставлять только имя файла. Тогда бэкап создается в папке по умолчанию, наподобие C:\SQLDB\MSSQL12.SQLEXPRESS\MSSQL\Backup\
(в данном случае сервер - локальный).
Но как программно наиболее простым способом можно узнать этот путь (имея в наличии строку подключения)? И можно ли из этой папки перемещать файлы на ту же флешку?
В общем случае задача не решается, потому что администратор сервера баз данных определяет - имеете вы доступ к бэкапам или не имеете. Он может закрыть учетной записи SQL Server'а доступ к каким либо компьютерам, кроме самого сервера, и закрыть вам доступ ко всем папкам на этом сервере, для примера.
В частных случаях есть два варианта:
Если же отвечать на вопрос, как узнать этот путь (хотя, на самом деле, вам это не нужно), то получить его можно следующим запросом (при наличии нужных прав, понятно):
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer',N'BackupDirectory'
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос такой как сделать что бы в одной ссылке передавалось 2 get параметра
Здравствуйте, Вопрос заключается в следующем: Каким образом (без использования плагинов) я могу убрать sidebar со Страницы Записей?
Здравствуйте! Подскажите пожалуйста, как мне спарсить значения json файла, который обернут в callback ?