Я использую этот код около 2 лет для восстановления резервной копии 2008 года r2 до 2008 года r2, и он работает каждый раз. Теперь я пытаюсь использовать тот же код для восстановления с резервной копии r2 в 2008 году до localdb 2012 года, и он терпит неудачу каждый раз. Сообщение об ошибке ниже. Не только восстановление завершается неудачно, оно оставляет текущую базу данных в состоянии ожидания восстановления, и неприменимо. Я использую C#, и все это должно выполняться программно без участия пользователя или администратора базы данных. Можете ли вы помочь мне вернуть эту вещь в нужное русло?Не удается восстановить базу данных с помощью LocalDB
using(var connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = String.Format("Alter Database {0} SET SINGLE_USER With ROLLBACK IMMEDIATE", dbName);
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
connection.Open();
cmd.ExecuteNonQuery();
SqlCommand cmd2 = new SqlCommand();
cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}'", dbName, backupFilePath);
cmd2.CommandType = CommandType.Text;
cmd2.Connection = connection;
cmd2.ExecuteNonQuery();
}
System.Data.SqlClient.SqlException (0x80131904): логический файл базы данных 'MyData_log' не может быть найден. Укажите полный путь для файла. RESTORE не смог запустить базу данных 'MyData'. RESTORE DATABASE заканчивается аномально.
Edit: изменил одну строку
cmd2.CommandText = String.Format(@"RESTORE DATABASE {0} FROM DISK = '{1}' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5", dbName, backupFilePath);
До сих пор не сделал никакой разницы.
См. Редактирование вопроса. Я скопировал sql из окна восстановления SSMS, чтобы использовать его в качестве новой команды. До сих пор он не работал для восстановления базы данных sql 2008 r2 до базы данных sql 2012. Я предположительно обнаружил, что если я установлю полный sql express 2012 на тестовой машине, восстановление будет работать, хотя я все еще использую LocalDB. Очень странно, и мне придется продолжать тестирование. –