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