Восстановление базы данных SQL Server с CDC с использованием объектов управления SQL в C # - PullRequest
0 голосов
/ 08 февраля 2019

Я восстанавливаю полную резервную копию базы данных с нашего производственного сервера на наш промежуточный сервер, используя класс 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);
...