Как восстановить резервную копию с одного связанного сервера на другой связанный сервер с помощью C # SMO - PullRequest
0 голосов
/ 26 июня 2019

Хотите восстановить резервную копию базы данных со связанного сервера A в базу данных, расположенную на связанном сервере B, используя C #. предпочитаю использовать SMO.

Я могу восстановить из локальной резервной копии на локальную машину.

{
 conn = new ServerConnection
           {
               ConnectionString = @"Data Source =
 (localdb)\MSSQLLocalDb;Initial Catalog=master;Integrated Security=true",                
            };


        try
        {
            //Restore Full
            srv = new Server(conn);
            //lsrv = srv.LinkedServers[@"DEVSQL\ALPHA"]; need to figure out how to restore to linked server instead of local.
            //srv.KillAllProcesses("G4TestNew");
            var res = new Restore();
            res.Database = "G4TestNew";
            res.Action = RestoreActionType.Database;
            filePath = @"\\CABCSERVER\Database\Temp\Full.bak";
            res.Devices.AddDevice(filePath, DeviceType.File);
            res.ReplaceDatabase = true;
            res.NoRecovery = true;
            var dataFile = new RelocateFile("G4Test", @"C:\TBD\G4Test.mdf");
            var logFile = new RelocateFile("G4Test_log", @"C:\TBD\G4TestNew.ldf");

            res.RelocateFiles.Add(dataFile);
            res.RelocateFiles.Add(logFile);

            res.SqlRestore(srv);

}

РЕДАКТИРОВАТЬ (Добавление более подробно) :. В этом случае доступ к связанным серверам осуществляется через «проверку подлинности сервера SQL», и приложение не имеет доступа к учетным данным, необходимым для прямого подключения, и может использовать «Интегрированную безопасность» для подключения только к локальной базе данных.

1 Ответ

2 голосов
/ 26 июня 2019

В SMO вы не подключаетесь к одному серверу, а затем администрируете связанный сервер. Вместо этого подключитесь напрямую к целевому серверу. например:

ConnectionString = @"Data Source =
 DEVSQL\ALPHA;Initial Catalog=master;Integrated Security=true",
srv = new Server(conn);
...