Я восстанавливаю полную резервную копию базы данных с нашего производственного сервера на наш промежуточный сервер, используя класс Restore в объектах управления SQL, через задачу сценария C # в SSIS.База данных, которую я восстанавливаю, является базой данных с поддержкой CDC с несколькими таблицами изменений - однако эти таблицы удаляются после завершения восстановления.Я знаю, что в команде TSQL Restore есть опция KEEP_CDC, но я не могу найти эквивалентное свойство в SMO.Есть ли способ выполнить восстановление с помощью SMO, сохранив экземпляр захвата CDC?Это мой код:
Server srv;
srv = new Server();
//kill all connections to the database prior to restore
srv.KillAllProcesses(databaseName);
Restore res = new Restore();
res.Database = databaseName;
res.Action = RestoreActionType.Database;
res.Devices.AddDevice(filePath, DeviceType.File);
res.ReplaceDatabase = true;
res.ReadFileList(srv);
DataTable filelist = res.ReadFileList(srv);
foreach (DataRow row in filelist.Rows)
{
string logicalFileName = Path.GetFileName(row["LogicalName"].ToString());
string physicalFileName = Path.GetFileName(row["PhysicalName"].ToString());
switch (Path.GetFileName(row["Type"].ToString()))
{
case "D":
res.RelocateFiles.Add(new RelocateFile(logicalFileName, Path.Combine(DataFilePath, physicalFileName)));
break;
case "L":
res.RelocateFiles.Add(new RelocateFile(logicalFileName, Path.Combine(LogFilePath, physicalFileName)));
break;
}
}
res.SqlRestore(srv);