Я вставляю раздел резервного копирования и восстановления базы данных SQL в мою программу.Я использовал MSDN Примеры (попробовал другой, и это не будет работать).Страница MSDN - http://msdn.microsoft.com/en-us/library/ms162133.aspx
У меня работает резервный файл, и я проверил его в Management Studio.
Но у меня возникли проблемы с восстановлением файла.
Кажется, что код работает, но база данных в SQL Server застряла в "Восстановление ..."
if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Server sqlServer = new Server();
Restore sqlRestore = new Restore();
sqlRestore.NoRecovery = true;
sqlRestore.Action = RestoreActionType.Database;
BackupDeviceItem deviceItem = new BackupDeviceItem(openFile.FileName, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = "firstRecoverTest";
sqlRestore.SqlRestore(sqlServer);
//Add the recovered database into the Entity Table
SqlCommand intoEntity = new SqlCommand("IF NOT EXISTS(SELECT entityName FROM Entitys WHERE entityName = 'firstRecoveryTest') INSERT INTO Entitys VALUES ('firstRecoveryTest');", sqlConnection);
sqlConnection.Open();
intoEntity.ExecuteNonQuery();
Database db = default(Database);
db = sqlServer.Databases["firstRecoverTest"];
db.RecoveryModel = (RecoveryModel)1;
db.AutoClose = true;
//db.Alter();
}
В примере есть db.Alter ();функция, но при этом выдается сообщение об ошибке «Произошел сбой при изменении базы данных« firstRecoverTest »».
Пожалуйста, дайте мне знать ваши мысли
Заранее спасибо
ОБНОВЛЕНИЕ
После вставки «ReplaceDatabase = true;»не было никаких изменений в конечном результате.Кроме того, пошаговое выполнение кода показывает, что оно проходит через него.
"db.Alter ();"это просто то, что помещается в конец кода (показывается как комментарий).Он используется при создании резервной копии и работает без ошибок.InnerError показывает эту информацию при использовании db.Alter ();
"ALTER DATABASE не разрешен, когда база данных находится в состоянии восстановления"
Интересная часть - это файлы журнала SQL.Я получаю 3 журнала:
«Запуск базы данных« firstRecoverTest ».»
«База данных« firstRecoverTest »помечена как« RESTORING »и находится в состоянии, которое не позволяет выполнить восстановление.«
» База данных была восстановлена: База данных: firstRecoverTest, дата (время создания): 2011/09/20 (15:44:48), первый LSN: 37: 159: 37, последний LSN: 37: 175: 1, количество устройств дампа: 1, информация об устройстве: (FILE = 1, TYPE = DISK: {'C: \ Users \ Administrator \ Desktop \ installer_backup'}). Информационное сообщение. Действия пользователя не требуются. "
Однако, когда я делаю обычное восстановление с помощью SQL Management Studio, появляется еще 2 записи в журнале, в которых говорится
«Запуск базы данных« [имя_базы_данных] ».»
«Восстановление завершено прибаза данных '[databaseName]'. База данных теперь доступна "
У меня недостаточно репутации, чтобы, к сожалению, опубликовать небольшой образ того, как она есть в SQL Management Studio.