mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
Fix restore service to set target db same as source db (#479)
* fix restore service to change target db * add overwriteTargetDb param * update comment
This commit is contained in:
@@ -147,6 +147,19 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.Contracts
|
||||
/// </summary>
|
||||
public TaskExecutionMode TaskExecutionMode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional parameter which indicates whether to overwrite target database by source database name.
|
||||
/// </summary>
|
||||
internal bool OverwriteTargetDatabase
|
||||
{
|
||||
get
|
||||
{
|
||||
return Options.ContainsKey(RestoreOptionsHelper.OverwriteTargetDatabase) ? GetOptionValue<bool>(RestoreOptionsHelper.OverwriteTargetDatabase) : false;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetOptionValue(RestoreOptionsHelper.OverwriteTargetDatabase, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -177,10 +177,16 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
bool supported = IsBackupRestoreOperationSupported(restoreParams.OwnerUri, out connInfo);
|
||||
|
||||
if (restoreParams.OverwriteTargetDatabase)
|
||||
{
|
||||
restoreParams.TargetDatabaseName = restoreParams.SourceDatabaseName;
|
||||
}
|
||||
|
||||
if (supported && connInfo != null)
|
||||
{
|
||||
RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams);
|
||||
restoreDataObject.OverwriteTargetDatabase = restoreParams.OverwriteTargetDatabase;
|
||||
response = this.restoreDatabaseService.CreateRestorePlanResponse(restoreDataObject);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
||||
|
||||
List<String> SourceDbNames { get; }
|
||||
|
||||
bool CanChangeTargetDatabase { get; }
|
||||
bool OverwriteTargetDatabase { get; set; }
|
||||
|
||||
string DefaultTargetDbName { get; }
|
||||
string TargetDatabaseName { get; set; }
|
||||
@@ -161,13 +161,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
||||
return Util.GetSourceDbNames();
|
||||
}
|
||||
|
||||
public bool CanChangeTargetDatabase
|
||||
{
|
||||
get
|
||||
{
|
||||
return DatabaseUtils.IsSystemDatabaseConnection(Server.ConnectionContext.DatabaseName);
|
||||
}
|
||||
}
|
||||
public bool OverwriteTargetDatabase { get; set; }
|
||||
|
||||
public string DefaultTargetDbName
|
||||
{
|
||||
|
||||
@@ -528,7 +528,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
||||
{
|
||||
DefaultValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
||||
{
|
||||
return restoreDataObject.CanChangeTargetDatabase ? restoreDataObject.DefaultSourceDbName : restoreDataObject.DefaultTargetDbName;
|
||||
return restoreDataObject.OverwriteTargetDatabase ? restoreDataObject.DefaultSourceDbName : restoreDataObject.DefaultTargetDbName;
|
||||
},
|
||||
CurrentValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
||||
//The list of names service uses to sends restore options to client
|
||||
private static string[] optionNames = new string[] { KeepReplication, ReplaceDatabase , SetRestrictedUser, RecoveryState ,
|
||||
BackupTailLog , TailLogBackupFile, TailLogWithNoRecovery, CloseExistingConnections, RelocateDbFiles, DataFileFolder, LogFileFolder,
|
||||
StandbyFile,
|
||||
StandbyFile, OverwriteTargetDatabase
|
||||
};
|
||||
//The key names of restore info in the resquest of response
|
||||
|
||||
@@ -80,6 +80,9 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
||||
//The key name to use to set in the requst. If set to true, the backup files will be used to restore otherwise the source database name
|
||||
internal const string ReadHeaderFromMedia = "readHeaderFromMedia";
|
||||
|
||||
//The key name to use to set in the requst. If set to true, the target database name will be overwritten by source database name
|
||||
internal const string OverwriteTargetDatabase = "overwriteTargetDatabase";
|
||||
|
||||
/// <summary>
|
||||
/// Creates the options metadata available for restore operations
|
||||
/// </summary>
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
||||
|
||||
public List<string> SourceDbNames { get; set; }
|
||||
|
||||
public bool CanChangeTargetDatabase { get; set; }
|
||||
public bool OverwriteTargetDatabase { get; set; }
|
||||
|
||||
public string DefaultTargetDbName { get; set; }
|
||||
|
||||
|
||||
@@ -336,7 +336,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
||||
restoreDataObject.SourceDatabaseName = optionValues.GetOptionValue<string>(RestoreOptionsHelper.SourceDatabaseName);
|
||||
restoreDataObject.TargetDatabaseName = optionValues.GetOptionValue<string>(RestoreOptionsHelper.TargetDatabaseName);
|
||||
restoreDataObject.TailLogWithNoRecovery = optionValues.GetOptionValue<bool>("TailLogWithNoRecovery");
|
||||
restoreDataObject.CanChangeTargetDatabase = optionValues.GetOptionValue<bool>("CanChangeTargetDatabase");
|
||||
restoreDataObject.OverwriteTargetDatabase = optionValues.GetOptionValue<bool>("CanChangeTargetDatabase");
|
||||
restoreDataObject.DefaultSourceDbName = optionValues.GetOptionValue<string>("DefaultSourceDbName");
|
||||
restoreDataObject.SourceDbNames = optionValues.GetOptionValue<List<string>>("SourceDbNames");
|
||||
restoreDataObject.DefaultTargetDbName = optionValues.GetOptionValue<string>("DefaultTargetDbName");
|
||||
|
||||
Reference in New Issue
Block a user