Я написал программу на C # для использования SQL 2008.
Я хочу сделать резервную копию базы данных и восстановить ее.Мой код для резервного копирования работает правильно, но восстановление не работает, и база данных становится однопользовательской.
Получите следующую ошибку:
Не удалось создать резервную копию файла журнала базы данных «доктор»Используйте BACKUP LOG WITH NORECOVERY для резервного копирования журнала, если он содержит работу, которую вы не хотите потерять.Используйте предложение WITH REPLACE или WITH STOPAT оператора RESTORE, чтобы просто перезаписать содержимое журнала.ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ завершается ненормально.Неквалифицированные транзакции откатываются.Расчетный откат
Мой код:
private void Backup(string strFileName)
{
try
{
string command = @"BACKUP DATABASE doctor TO DISK='"+ strFileName+"'";
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Restore(string strFileName)
{
try
{
string command = "ALTER DATABASE doctor SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + " RESTORE DATABASE doctor FROM DISK='" + strFileName + "'";
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial Catalog=doctor;Integrated Security=True");
if (oConnection.State == ConnectionState.Closed)
{
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}