C# 以不同用户身份从备份中恢复SQL数据库

C# 以不同用户身份从备份中恢复SQL数据库,c#,sql-server,database,database-restore,C#,Sql Server,Database,Database Restore,我正在尝试使用Microsoft.SqlServer.Management.Smo以编程方式还原SQL数据库备份 这是我目前的代码: Server corp = new Server(SQLServerName); Restore restore = new Restore(); restore.Database = databaseName; restore.Action = RestoreActionType.Database;

我正在尝试使用Microsoft.SqlServer.Management.Smo以编程方式还原SQL数据库备份

这是我目前的代码:

        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'.
Microsoft.SqlServer.Management.Smo.FailedOperationException:服务器“”的还原失败。-->Microsoft.SqlServer.Management.Smo.Smo异常:System.Data.SqlClient.SqlError:操作系统在“G:\Databases”上尝试“RestoreContainer::ValidateTargetForCreation”时返回错误“5(访问被拒绝)。”。
据我所知,这是因为运行代码的用户没有正确的权限。我不知道代码是作为什么用户运行的,也不知道如何更改它


请您告诉我,是否有办法在不更改用户的情况下解决此问题,如果没有,请告诉我如何更改?

这不是SQL Server错误<代码>访问被拒绝很可能是由文件权限引起的。您的帐户是否有权访问这些文件夹?SQL Server服务帐户是否有权访问
LocalBackupFilePath
?变量名为“Local”这一事实向我表明它存储在您的设备上(而不是服务器上),因此可能的答案是“no”。@PanagiotisKanavos,是的,我有,这就是为什么我假设代码作为另一个帐户运行。@Larnu,文件存储在SQL server上,代码在SQL server上运行。我想应该,但我不确定。您能告诉我如何检查吗?恢复将作为SQL Server使用的服务帐户@J.Doe运行,而不是您的用户。