Восстановление базы данных SQL из резервной копии от имени другого пользователя - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь программно восстановить резервную копию базы данных SQL, используя Microsoft.SqlServer.Management.Smo.

. Это мой код:

        Server corp = new Server(SQLServerName);
        Restore restore = new Restore();
        restore.Database = databaseName;
        restore.Action = RestoreActionType.Database;
        restore.Devices.AddDevice(LocalBackupFilePath, DeviceType.File);
        restore.PercentCompleteNotification = 5;
        restore.ReplaceDatabase = true;
        restore.PercentComplete += DatabaseRestorePercentComplete;
        restore.Complete += DatabaseRestoreComplete;

        DataTable dbFiles = restore.ReadFileList(corp);
        string backupLogicalName_MDF = dbFiles.Rows[0][0].ToString();
        string backupLogicalName_LDF = dbFiles.Rows[1][0].ToString();
        restore.RelocateFiles.Add(new RelocateFile(backupLogicalName_MDF, @"G:\Databases"));
        restore.RelocateFiles.Add(new RelocateFile(backupLogicalName_LDF, @"G:\SqlTranslogs"));

        restore.SqlRestore(corp);

Когда я выполняю это, выдает эту ошибку:

Microsoft.SqlServer.Management.Smo.FailedOperationException: Restore failed for Server '<server>'.  ---> Microsoft.SqlServer.Management.Smo.SmoException: System.Data.SqlClient.SqlError: The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'G:\Databases'.

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

Не могли бы вы, пожалуйста, посоветовать мне, если есть способ решить эту проблему без изменения пользователя, а если нет - как это сделать? изменить это?

...