diff --git a/src/Microsoft.SqlTools.ServiceLayer/DisasterRecovery/RestoreOperation/RestoreDatabaseTaskDataObject.cs b/src/Microsoft.SqlTools.ServiceLayer/DisasterRecovery/RestoreOperation/RestoreDatabaseTaskDataObject.cs index 7e2fda66..ede25b08 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/DisasterRecovery/RestoreOperation/RestoreDatabaseTaskDataObject.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/DisasterRecovery/RestoreOperation/RestoreDatabaseTaskDataObject.cs @@ -637,7 +637,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation { if (!string.IsNullOrEmpty(this.DataFilesFolder)) { - dbFile.PhysicalNameRelocate = PathWrapper.Combine(this.DataFilesFolder, fileName); + dbFile.PhysicalNameRelocate = CombineToServerConnectionPath(this.DataFilesFolder, fileName); } else { @@ -648,7 +648,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation { if (!string.IsNullOrEmpty(this.LogFilesFolder)) { - dbFile.PhysicalNameRelocate = PathWrapper.Combine(this.LogFilesFolder, fileName); + dbFile.PhysicalNameRelocate = CombineToServerConnectionPath(this.LogFilesFolder, fileName); } else { @@ -663,6 +663,23 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation } } + /// + /// Combining the root and file name using the server connection file path seperator + /// + private string CombineToServerConnectionPath(string root, string filePath) + { + string pathSeparatorFromServerConnection = PathWrapper.PathSeparatorFromServerConnection(Server.ConnectionContext); + string combinedPath = PathWrapper.Combine(root, filePath); + + // Make sure all path seperators are server connection separator + string result = combinedPath.Replace(Path.DirectorySeparatorChar.ToString(), pathSeparatorFromServerConnection); + + // Make sure there's not any double file seperator in the path + result = result.Replace(pathSeparatorFromServerConnection + pathSeparatorFromServerConnection, + pathSeparatorFromServerConnection); + return result; + } + /// /// Updates the Restore folder location of those db files whose orginal directory location /// is not present in the destination computer.