Как мне сделать резервную копию базы данных Sql Server Express программно? - PullRequest
1 голос
/ 02 июня 2010

Я написал приложение для Windows, которое использует сервер базы данных Sql Express.

Как программно выполнить резервное копирование и восстановление базы данных с помощью моего приложения?

Ответы [ 3 ]

2 голосов
/ 02 июня 2010

Ваше приложение может запустить файл .sql, который выполняет резервное копирование или восстановление для вас. Конечно, я в основном видел, как это делается в запланированном задании, но я полагаю, что вы могли бы сделать это из запускаемого события внутри вашего приложения.

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\path\\to\\backup.sql";
p.Start();

UPDATE:

Как указано в комментариях, это не будет работать, если на сервере не установлена ​​SQL Management Studio. Кроме того, вы можете вызвать хранимую процедуру. Поразмыслив, я не уверен, почему я не предложил сначала сохранить хранимый процесс - возможно, потому что другая методология была свежа в моем мозгу из-за того, что он был вынужден реализовать ее таким образом в предыдущем проекте.

1 голос
/ 02 июня 2010

Вы можете использовать Объекты управления SQL Server

Сначала добавьте в свой проект ссылку на: Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoExtended.dll, Microsoft.SqlServer.SqlEnum.dll и Microsoft.SqlServer.SmoEnum.dll.

После этого для резервного копирования базы данных выполните следующий пример:

//Connect to the server
Server srv = new Server();
//If Sql Server is not local or is a named instance you could do 
//Server srv = new Server("SERVERNAME");

Database db = srv.Databases("YourDB");

//Create a backup definition
Backup backup = new Backup(); 

backup.Action = BackupActionType.Database; 
backup.BackupSetDescription = "Full backup of Adventureworks2008R2"; 
backup.BackupSetName = "My app Backup"; 
backup.Database = "YourDB"; 

//Configure the backup device

BackupDeviceItem backupDevice = new BackupDeviceItem("YourDB.bak", DeviceType.File); 

backup.Devices.Add(backupDevice); 

//Specify wether do a full backup or not
backup.Incremental = false; 

//Specify log truncation mode
backup.LogTruncation = BackupTruncateLogType.Truncate; 

//Do the backùp
backup.SqlBackup(srv); 
1 голос
/ 02 июня 2010

Вы можете запросить резервную копию из вашего приложения, выполнив:

@"BACKUP DATABASE [MyDBName] TO DISK = 'c:\somedir\MyDBName.bak' WITH INIT" ( ref )

Или используйте объекты SMO SQL SqlBackup () напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...