mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-17 02:51:45 -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>
|
/// </summary>
|
||||||
public TaskExecutionMode TaskExecutionMode { get; set; }
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,9 +178,15 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
ConnectionInfo connInfo;
|
ConnectionInfo connInfo;
|
||||||
bool supported = IsBackupRestoreOperationSupported(restoreParams.OwnerUri, out connInfo);
|
bool supported = IsBackupRestoreOperationSupported(restoreParams.OwnerUri, out connInfo);
|
||||||
|
|
||||||
|
if (restoreParams.OverwriteTargetDatabase)
|
||||||
|
{
|
||||||
|
restoreParams.TargetDatabaseName = restoreParams.SourceDatabaseName;
|
||||||
|
}
|
||||||
|
|
||||||
if (supported && connInfo != null)
|
if (supported && connInfo != null)
|
||||||
{
|
{
|
||||||
RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams);
|
RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams);
|
||||||
|
restoreDataObject.OverwriteTargetDatabase = restoreParams.OverwriteTargetDatabase;
|
||||||
response = this.restoreDatabaseService.CreateRestorePlanResponse(restoreDataObject);
|
response = this.restoreDatabaseService.CreateRestorePlanResponse(restoreDataObject);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
|
|
||||||
List<String> SourceDbNames { get; }
|
List<String> SourceDbNames { get; }
|
||||||
|
|
||||||
bool CanChangeTargetDatabase { get; }
|
bool OverwriteTargetDatabase { get; set; }
|
||||||
|
|
||||||
string DefaultTargetDbName { get; }
|
string DefaultTargetDbName { get; }
|
||||||
string TargetDatabaseName { get; set; }
|
string TargetDatabaseName { get; set; }
|
||||||
@@ -161,13 +161,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
return Util.GetSourceDbNames();
|
return Util.GetSourceDbNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanChangeTargetDatabase
|
public bool OverwriteTargetDatabase { get; set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return DatabaseUtils.IsSystemDatabaseConnection(Server.ConnectionContext.DatabaseName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string DefaultTargetDbName
|
public string DefaultTargetDbName
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -528,7 +528,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery.RestoreOperation
|
|||||||
{
|
{
|
||||||
DefaultValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
DefaultValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
||||||
{
|
{
|
||||||
return restoreDataObject.CanChangeTargetDatabase ? restoreDataObject.DefaultSourceDbName : restoreDataObject.DefaultTargetDbName;
|
return restoreDataObject.OverwriteTargetDatabase ? restoreDataObject.DefaultSourceDbName : restoreDataObject.DefaultTargetDbName;
|
||||||
},
|
},
|
||||||
CurrentValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
CurrentValueFunction = (IRestoreDatabaseTaskDataObject restoreDataObject) =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DisasterRecovery
|
|||||||
//The list of names service uses to sends restore options to client
|
//The list of names service uses to sends restore options to client
|
||||||
private static string[] optionNames = new string[] { KeepReplication, ReplaceDatabase , SetRestrictedUser, RecoveryState ,
|
private static string[] optionNames = new string[] { KeepReplication, ReplaceDatabase , SetRestrictedUser, RecoveryState ,
|
||||||
BackupTailLog , TailLogBackupFile, TailLogWithNoRecovery, CloseExistingConnections, RelocateDbFiles, DataFileFolder, LogFileFolder,
|
BackupTailLog , TailLogBackupFile, TailLogWithNoRecovery, CloseExistingConnections, RelocateDbFiles, DataFileFolder, LogFileFolder,
|
||||||
StandbyFile,
|
StandbyFile, OverwriteTargetDatabase
|
||||||
};
|
};
|
||||||
//The key names of restore info in the resquest of response
|
//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
|
//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";
|
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>
|
/// <summary>
|
||||||
/// Creates the options metadata available for restore operations
|
/// Creates the options metadata available for restore operations
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.DisasterRecovery
|
|||||||
|
|
||||||
public List<string> SourceDbNames { get; set; }
|
public List<string> SourceDbNames { get; set; }
|
||||||
|
|
||||||
public bool CanChangeTargetDatabase { get; set; }
|
public bool OverwriteTargetDatabase { get; set; }
|
||||||
|
|
||||||
public string DefaultTargetDbName { 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.SourceDatabaseName = optionValues.GetOptionValue<string>(RestoreOptionsHelper.SourceDatabaseName);
|
||||||
restoreDataObject.TargetDatabaseName = optionValues.GetOptionValue<string>(RestoreOptionsHelper.TargetDatabaseName);
|
restoreDataObject.TargetDatabaseName = optionValues.GetOptionValue<string>(RestoreOptionsHelper.TargetDatabaseName);
|
||||||
restoreDataObject.TailLogWithNoRecovery = optionValues.GetOptionValue<bool>("TailLogWithNoRecovery");
|
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.DefaultSourceDbName = optionValues.GetOptionValue<string>("DefaultSourceDbName");
|
||||||
restoreDataObject.SourceDbNames = optionValues.GetOptionValue<List<string>>("SourceDbNames");
|
restoreDataObject.SourceDbNames = optionValues.GetOptionValue<List<string>>("SourceDbNames");
|
||||||
restoreDataObject.DefaultTargetDbName = optionValues.GetOptionValue<string>("DefaultTargetDbName");
|
restoreDataObject.DefaultTargetDbName = optionValues.GetOptionValue<string>("DefaultTargetDbName");
|
||||||
|
|||||||
Reference in New Issue
Block a user