2010-06-02 3 views

ответ

2

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

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

UPDATE:

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

+0

Это предполагает Management Studio установлен в той же машине, что и приложение окна. Это не может быть так, так что это не будет работать всегда. –

+0

Хорошо, сэр. Я поправлю свое решение соответствующим образом. – JustLoren

1

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

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

Или использовать SQL SMO объектов SqlBackup() непосредственно.

1

Вы можете использовать SQL Server Management Objects

Сначала добавьте ссылку в вашем проекте: 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); 
Смежные вопросы