Я хочу восстановить базу данных SQL Server с использованием кода C # - PullRequest
0 голосов
/ 02 октября 2019

Я хочу выбрать путь восстановления, затем выбрать файл резервной копии базы данных и восстановить его, нажав кнопку в Visual Studio 2019.

У меня есть код ниже, который я уже написал, но я получаю ошибку.

string connection = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;

SqlConnection con = new SqlConnection(connection);
con.Open();

String sqlquery = "Use Master ALTER DATABASE databasename SET OFFLINE WITH ROLLBACK IMMEDIATE RESTORE DATABASE FHMTailorDB FROM DISK ='" + RestoreTextBox.Text + "' ALTER DATABASE databasename SET ONLINE WITH ROLLBACK IMMEDIATE";

SqlCommand cmd = new SqlCommand(sqlquery, con);
cmd.ExecuteNonQuery();

con.Close();
con.Dispose();

lblError.Text = "Database Restore successfully";

Ошибка:

System.Data.SqlClient.SqlException: «У пользователя нет прав на изменение базы данных« имя базы данных », база данных не существует илибаза данных не находится в состоянии, которое позволяет проверять доступ.

Оператор ALTER DATABASE не выполнен.

Ошибка поиска в каталоге для файла "F: \ FHMTailorManager \ FHMTailorDB.mdf" с ошибкой операционной системы 2 (система не может найти указанный файл.).

Файл "FHMTailorDB" не можетбыть восстановленным в 'F: \ FHMTailorManager \ FHMTailorDB.mdf'. Используйте WITH MOVE для определения допустимого местоположения файла.

Ошибка поиска в каталоге для файла "F: \ FHMTailorManager \ FHMTailorDB_log.ldf" с ошибкой операционной системы 2 (система не может найти указанный файл.).

Файл 'FHMTailorDB_log' не может быть восстановлен в 'F: \ FHMTailorManager \ FHMTailorDB_log.ldf'. Используйте WITH MOVE, чтобы определить правильное местоположение файла. Проблемы были выявлены при планировании оператора RESTORE. Предыдущие сообщения содержат подробности.

RESTORE DATABASE аварийно завершается.

У пользователя нет прав на изменение базы данных «имя базы данных», база данных не существует или база данных не находится в состоянии, котороеразрешает проверки доступа.

Оператор ALTER DATABASE не выполнен.

Изменен контекст базы данных на 'master'. '

1 Ответ

1 голос
/ 02 октября 2019

У вас есть две проблемы

Во-первых, учетные данные, предоставленные вашей строкой соединения, не имеют достаточных прав для выполнения задачи по переводу базы данных в автономный режим.

Во-вторых, вы пытаетесь выбрать файлы MDF / LDF на клиентском компьютере, а файловая система на стороне сервера не знает или не имеет доступа к этой папке.

Итак, мой ответ: вам нужно попробовать что-то совершенно другое.

Попробуйте использовать SMO. В интернете есть статья, которая мягко знакомит читателей с SMO.

Статья указывает на решение на GitHub, которое содержит все, что вам нужно.

Это означает набор автоматизированных процедур, написанных на .NET (C #) для резервного копирования, восстановления и многого другого.

Итак, попробуйте это Программирование SQL Server с помощью инфраструктуры объектов управления SQL Server

...