2015-08-24 5 views
0

Я делаю проект в C#. Я использую базу данных sql в своем проекте. Я хочу включить функцию резервного копирования и восстановления базы данных проекта. Что мне нужно делать/кодировать?Добавление функции резервного копирования и восстановления базы данных?

+0

http://www.c-sharpcorner.com/UploadFile/rohatash/restore-sql-server-backup-file-with-C-Sharp/ – Nalaka

+0

Какой РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

+0

Я использую sql server 2008 –

ответ

0

Вы хотите сделать резервную копию полной базы данных или хотите только восстановить состояние до изменения базы данных?

Первое, что необычно сделать изнутри вашей программы, в конце концов: вы уверены, что никто другой не меняет базу данных при резервном копировании?

Последнее довольно часто: перед внесением нескольких изменений в базу данных вы помните, как это было до изменения, внесите изменения и решите, хотите ли вы сохранить изменения или вернуться к ситуации, прежде чем изменять ее , например, из-за ошибок.

Последнее выполняется с использованием класса System.Data.SqlClient.SqlTransaction.

using (var sqlConnection = GetSqlConnection(...)) 
{ 
    try (sqlConnection.Open() 
    { // before making the changes: remember the state of the database 
     using (var transaction = sqlConnection.BeginTransaction()) 
     { 
      bool changesOk = true; 
      try 
      { 
       changesOk = ChangeDatabase(...); 
      } 
      catch (Exception exc) 
      { 
       changesOk = false; 
      } 

      if (!changesOk) 
      { // go back to the state at the beginning of the transaction 
       transaction.RollBack(); 
      } 
      else 
      { // no error: save the changes: 
       transaction.Commit(); 
      } 
     } 
    } 
} 
+0

Я хочу сделать резервную копию полной базы данных и восстановить ее. –

0

**Backup and Restore SQL Server databases programmatically with SMO **

SMO предоставляет вспомогательные классы для выполнения конкретных задач. Для резервного копирования и восстановления он предоставляет два основных класса утилиты (Резервное копирование и восстановление), которые доступны в пространстве имен Microsoft.SqlServer.Management.Smo.

Это пример кода.

Backup bkpDBFull = new Backup(); 
    /* Specify whether you want to back up database or files or log */ 
    bkpDBFull.Action = BackupActionType.Database; 
    /* Specify the name of the database to back up */ 
    bkpDBFull.Database = myDatabase.Name; 
    /* You can take backup on several media type (disk or tape), here I am 
    * using File type and storing backup on the file system */ 
    bkpDBFull.Devices.AddDevice(@"D:\AdventureWorksFull.bak", DeviceType.File); 
    bkpDBFull.BackupSetName = "Adventureworks database Backup"; 
    bkpDBFull.BackupSetDescription = "Adventureworks database - Full Backup"; 
    /* You can specify the expiration date for your backup data 
    * after that date backup data would not be relevant */ 
    bkpDBFull.ExpirationDate = DateTime.Today.AddDays(10); 

    /* You can specify Initialize = false (default) to create a new 
    * backup set which will be appended as last backup set on the media. You 
    * can specify Initialize = true to make the backup as first set on the 
    * medium and to overwrite any other existing backup sets if the all the 
    * backup sets have expired and specified backup set name matches with 
    * the name on the medium */ 
    bkpDBFull.Initialize = false; 

    /* Wiring up events for progress monitoring */ 
    bkpDBFull.PercentComplete += CompletionStatusInPercent; 
    bkpDBFull.Complete += Backup_Completed; 

    /* SqlBackup method starts to take back up 
    * You can also use SqlBackupAsync method to perform the backup 
    * operation asynchronously */ 
    bkpDBFull.SqlBackup(myServer); 
    private static void CompletionStatusInPercent(object sender, PercentCompleteEventArgs args) 
    { 
     Console.Clear(); 
     Console.WriteLine("Percent completed: {0}%.", args.Percent); 
    } 
    private static void Backup_Completed(object sender, ServerMessageEventArgs args) 
    { 
     Console.WriteLine("Hurray...Backup completed."); 
     Console.WriteLine(args.Error.Message); 
    } 
    private static void Restore_Completed(object sender, ServerMessageEventArgs args) 
    { 
     Console.WriteLine("Hurray...Restore completed."); 
     Console.WriteLine(args.Error.Message); 
    } 
Смежные вопросы