mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-17 02:51:45 -05:00
Update restore service to return default backup folder (#475)
* Fix restore to return default backup folder * fix break * fix tests * fix file validator for invalid filepath
This commit is contained in:
@@ -142,7 +142,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
{
|
{
|
||||||
BackupConfigInfo configInfo = new BackupConfigInfo();
|
BackupConfigInfo configInfo = new BackupConfigInfo();
|
||||||
configInfo.RecoveryModel = GetRecoveryModel(databaseName);
|
configInfo.RecoveryModel = GetRecoveryModel(databaseName);
|
||||||
configInfo.DefaultBackupFolder = GetDefaultBackupFolder();
|
configInfo.DefaultBackupFolder = CommonUtilities.GetDefaultBackupFolder(this.serverConnection);
|
||||||
configInfo.LatestBackups = GetLatestBackupLocations(databaseName);
|
configInfo.LatestBackups = GetLatestBackupLocations(databaseName);
|
||||||
configInfo.BackupEncryptors = GetBackupEncryptors();
|
configInfo.BackupEncryptors = GetBackupEncryptors();
|
||||||
return configInfo;
|
return configInfo;
|
||||||
@@ -338,11 +338,6 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
return recoveryModel.ToString();
|
return recoveryModel.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetDefaultBackupFolder()
|
|
||||||
{
|
|
||||||
return this.backupRestoreUtil.GetDefaultBackupFolder();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return the latest backup locations
|
/// Return the latest backup locations
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
return recoveryModelString;
|
return recoveryModelString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetDefaultBackupFolder()
|
public static string GetDefaultBackupFolder(ServerConnection connection)
|
||||||
{
|
{
|
||||||
string backupFolder = "";
|
string backupFolder = "";
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
Request req = new Request();
|
Request req = new Request();
|
||||||
en = new Enumerator();
|
en = new Enumerator();
|
||||||
req.Urn = "Server/Setting";
|
req.Urn = "Server/Setting";
|
||||||
ds = en.Process(this.sqlConnection, req);
|
ds = en.Process(connection, req);
|
||||||
|
|
||||||
if (ds.Tables[0].Rows.Count > 0)
|
if (ds.Tables[0].Rows.Count > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -85,18 +85,25 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
|
|
||||||
#region private methods
|
#region private methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if the folder path exists
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="connection">sql connection</param>
|
||||||
|
/// <param name="filePath">full file path</param>
|
||||||
|
/// <returns></returns>
|
||||||
internal static string IsFolderPathExisting(SqlConnection connection, string filePath)
|
internal static string IsFolderPathExisting(SqlConnection connection, string filePath)
|
||||||
{
|
{
|
||||||
// If the file path doesn't exist, check if the folder exists
|
|
||||||
string folderPath = PathWrapper.GetDirectoryName(filePath);
|
string folderPath = PathWrapper.GetDirectoryName(filePath);
|
||||||
string errorMessage = string.Empty;
|
string errorMessage = string.Empty;
|
||||||
|
|
||||||
if (string.Compare(GetMachineName(connection.DataSource), Environment.MachineName, StringComparison.OrdinalIgnoreCase) == 0)
|
if (string.IsNullOrEmpty(folderPath))
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(folderPath) && !Directory.Exists(folderPath))
|
|
||||||
{
|
{
|
||||||
errorMessage = SR.InvalidBackupPathError;
|
errorMessage = SR.InvalidBackupPathError;
|
||||||
}
|
}
|
||||||
|
else if (string.Compare(GetMachineName(connection.DataSource), Environment.MachineName, StringComparison.OrdinalIgnoreCase) == 0
|
||||||
|
&& !Directory.Exists(folderPath))
|
||||||
|
{
|
||||||
|
errorMessage = SR.InvalidBackupPathError;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
response.ConfigInfo.Add(RestoreOptionsHelper.LogFileFolder, restoreTaskObject.DefaultLogFileFolder);
|
response.ConfigInfo.Add(RestoreOptionsHelper.LogFileFolder, restoreTaskObject.DefaultLogFileFolder);
|
||||||
// The db names with backup set
|
// The db names with backup set
|
||||||
response.ConfigInfo.Add(RestoreOptionsHelper.SourceDatabaseNamesWithBackupSets, restoreTaskObject.GetDatabaseNamesWithBackupSets());
|
response.ConfigInfo.Add(RestoreOptionsHelper.SourceDatabaseNamesWithBackupSets, restoreTaskObject.GetDatabaseNamesWithBackupSets());
|
||||||
|
// Default backup folder path in the target server
|
||||||
|
response.ConfigInfo.Add(RestoreOptionsHelper.DefaultBackupFolder, restoreTaskObject.DefaultBackupFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
string LogFilesFolder { get; set; }
|
string LogFilesFolder { get; set; }
|
||||||
string DefaultLogFileFolder { get; }
|
string DefaultLogFileFolder { get; }
|
||||||
List<DbFile> DbFiles { get; }
|
List<DbFile> DbFiles { get; }
|
||||||
|
string DefaultBackupFolder { get; }
|
||||||
|
|
||||||
RestoreOptions RestoreOptions { get; }
|
RestoreOptions RestoreOptions { get; }
|
||||||
|
|
||||||
@@ -851,6 +852,14 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string DefaultBackupFolder
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return CommonUtilities.GetDefaultBackupFolder(this.server.ConnectionContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal RestorePlan CreateRestorePlan(DatabaseRestorePlanner planner, RestoreOptions restoreOptions)
|
internal RestorePlan CreateRestorePlan(DatabaseRestorePlanner planner, RestoreOptions restoreOptions)
|
||||||
{
|
{
|
||||||
this.CreateOrUpdateRestorePlanException = null;
|
this.CreateOrUpdateRestorePlanException = null;
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
//Option name logFileFolder
|
//Option name logFileFolder
|
||||||
internal const string LogFileFolder = "logFileFolder";
|
internal const string LogFileFolder = "logFileFolder";
|
||||||
|
|
||||||
|
//Option name defaultBackupFolder
|
||||||
|
internal const string DefaultBackupFolder = "defaultBackupFolder";
|
||||||
|
|
||||||
//The key name to use to set the session id in the request
|
//The key name to use to set the session id in the request
|
||||||
internal const string SessionId = "sessionId";
|
internal const string SessionId = "sessionId";
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
|||||||
|
|
||||||
public string DefaultLogFileFolder { get; set; }
|
public string DefaultLogFileFolder { get; set; }
|
||||||
|
|
||||||
|
public string DefaultBackupFolder { get; set; }
|
||||||
|
|
||||||
public List<DbFile> DbFiles { get; set; }
|
public List<DbFile> DbFiles { get; set; }
|
||||||
|
|
||||||
public RestoreOptions RestoreOptions { get; set; }
|
public RestoreOptions RestoreOptions { get; set; }
|
||||||
|
|||||||
@@ -292,6 +292,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
|||||||
optionValues.Options.Add("DbFiles", new List<DbFile>() { new DbFile("", '1', "") });
|
optionValues.Options.Add("DbFiles", new List<DbFile>() { new DbFile("", '1', "") });
|
||||||
optionValues.Options.Add("DefaultDataFileFolder", "Default data file folder");
|
optionValues.Options.Add("DefaultDataFileFolder", "Default data file folder");
|
||||||
optionValues.Options.Add("DefaultLogFileFolder", "Default log file folder");
|
optionValues.Options.Add("DefaultLogFileFolder", "Default log file folder");
|
||||||
|
optionValues.Options.Add("DefaultBackupFolder", "Default backup folder");
|
||||||
optionValues.Options.Add("IsTailLogBackupPossible", true);
|
optionValues.Options.Add("IsTailLogBackupPossible", true);
|
||||||
optionValues.Options.Add("IsTailLogBackupWithNoRecoveryPossible", true);
|
optionValues.Options.Add("IsTailLogBackupWithNoRecoveryPossible", true);
|
||||||
optionValues.Options.Add("GetDefaultStandbyFile", "default standby file");
|
optionValues.Options.Add("GetDefaultStandbyFile", "default standby file");
|
||||||
@@ -324,6 +325,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
|||||||
restoreDataObject.DbFiles = optionValues.GetOptionValue<List<DbFile>>("DbFiles");
|
restoreDataObject.DbFiles = optionValues.GetOptionValue<List<DbFile>>("DbFiles");
|
||||||
restoreDataObject.DefaultDataFileFolder = optionValues.GetOptionValue<string>("DefaultDataFileFolder");
|
restoreDataObject.DefaultDataFileFolder = optionValues.GetOptionValue<string>("DefaultDataFileFolder");
|
||||||
restoreDataObject.DefaultLogFileFolder = optionValues.GetOptionValue<string>("DefaultLogFileFolder");
|
restoreDataObject.DefaultLogFileFolder = optionValues.GetOptionValue<string>("DefaultLogFileFolder");
|
||||||
|
restoreDataObject.DefaultBackupFolder = optionValues.GetOptionValue<string>("DefaultBackupFolder");
|
||||||
restoreDataObject.IsTailLogBackupPossible = optionValues.GetOptionValue<bool>("IsTailLogBackupPossible");
|
restoreDataObject.IsTailLogBackupPossible = optionValues.GetOptionValue<bool>("IsTailLogBackupPossible");
|
||||||
restoreDataObject.IsTailLogBackupWithNoRecoveryPossible = optionValues.GetOptionValue<bool>("IsTailLogBackupWithNoRecoveryPossible");
|
restoreDataObject.IsTailLogBackupWithNoRecoveryPossible = optionValues.GetOptionValue<bool>("IsTailLogBackupWithNoRecoveryPossible");
|
||||||
restoreDataObject.DefaultStandbyFile = optionValues.GetOptionValue<string>("GetDefaultStandbyFile");
|
restoreDataObject.DefaultStandbyFile = optionValues.GetOptionValue<string>("GetDefaultStandbyFile");
|
||||||
|
|||||||
Reference in New Issue
Block a user