Скопируйте / Вставьте файл восстановления .mdf и .ldf на мой локальный компьютер - PullRequest
0 голосов
/ 17 марта 2020

У меня SQL Сервер Express, работающий на моей машине, и я хотел бы создать резервную копию базы данных и восстановить эту резервную копию на моем локальном компьютере, чтобы я мог использовать файлы .mdf и .ldf на местном уровне.

У меня есть небольшая C# программа, которая управляет этой базой данных и позволяет мне выполнять запросы на создание и восстановление резервной копии. Однако, когда я хочу скопировать / вставить файлы .mdf и .ldf локально, у меня нет прав доступа. Только учетная запись администратора и служба SQL имеют доступ.

Есть ли способ выполнить восстановление локально, не открывая общий доступ к папке на сервере?

Метод резервного копирования:

string cmd = "BACKUP DATABASE [" + "Database" + "] TO DISK='" + "\\\\srv-vm\\PJDB\\Backup\\Database.bak" +  "'";

using (SqlCommand command = new SqlCommand(cmd, con))
{
  if (con.State != ConnectionState.Open)
  {
      con.Open();
  }

  command.ExecuteNonQuery();
}

Метод восстановления:

SqlConnection objconnection = new SqlConnection(connectionstring);
ServerConnection con = new 
ServerConnection(objconnection.DataSource.ToString());
Server server = new Server(con);

Restore _dataBase = new Restore();

_dataBase.Database = "db";
_dataBase.Action = RestoreActionType.Database;
_dataBase.Devices.AddDevice("\\\\srv-vm\\PJDB\\Backup\\Database.bak", DeviceType.File);
// define "file relocation" - for all "logical" files in a SQL Server database,
// define a new physical location where the file will end up at          
RelocateFile relocateDataFile = new RelocateFile("Database", "\\\\srv-vm\\PJDB\\Backup" + "\\Database.mdf");
RelocateFile relocateLogFile = new RelocateFile("Database_log", "\\\\srv-vm\\PJDB\\Backup" + "\\Database_log.ldf");

_dataBase.RelocateFiles.Add(relocateDataFile);
_dataBase.RelocateFiles.Add(relocateLogFile);
_dataBase.ReplaceDatabase = true;
_dataBase.SqlRestore(server);
_dataBase.NoRecovery = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...