public TaskResult Restore(DatabaseMediaInfo info) { try { ValidateRestoreInput(info); var rootFile = info.BackupPath; var templateParams = new { info.TargetDatabase, info.FolderForDataFile, info.FolderForLogFile, RootFile = rootFile, AbortIfDatabaseExists = info.AbortIfDatabaseExists ? "1" : "0" }; var template = GetTemplate(info); var cmd = template.FormatLiquid(templateParams); using (var cn = GetConnection(info.ConnectionInfo)) { var execResult = cn.Execute(cmd); return(TaskResult.Success()); } } catch (Exception ex) { return(TaskResult.Failed(ex)); } }
private void ValidateBackupInput(DatabaseMediaInfo info) { var connectionInfo = info.ConnectionInfo; if (string.IsNullOrEmpty(connectionInfo.Instance)) { throw new ArgumentException("The connection instance is empty."); } if (string.IsNullOrEmpty(connectionInfo.User)) { throw new ArgumentException("The connection user is empty."); } if (string.IsNullOrEmpty(connectionInfo.Password)) { throw new ArgumentException("The connection password is empty."); } if (string.IsNullOrEmpty(connectionInfo.Database)) { connectionInfo.Database = "master"; } if (string.IsNullOrEmpty(info.SourceDatabase)) { throw new ArgumentException("The source database is empty."); } }
private void ValidateRestoreInput(DatabaseMediaInfo info) { var connectionInfo = info.ConnectionInfo; if (string.IsNullOrEmpty(connectionInfo.Instance)) { throw new ArgumentException("The connection instance is empty."); } if (string.IsNullOrEmpty(connectionInfo.User)) { throw new ArgumentException("The connection user is empty."); } if (string.IsNullOrEmpty(connectionInfo.Password)) { throw new ArgumentException("The connection password is empty."); } if (string.IsNullOrEmpty(connectionInfo.Database)) { connectionInfo.Database = "master"; } if (string.IsNullOrEmpty(info.TargetDatabase)) { throw new ArgumentException("The target database is empty."); } if (string.IsNullOrEmpty(info.BackupPath)) { throw new ArgumentException("The backup file path is empty."); } if (info.RestoreOptions.HasFlag(RestoreOptions.MoveFiles)) { if (string.IsNullOrEmpty(info.FolderForDataFile)) { throw new ArgumentException("The folder for placing the data file is empty."); } if (string.IsNullOrEmpty(info.FolderForLogFile)) { info.FolderForLogFile = info.FolderForDataFile; } if (!info.FolderForDataFile.EndsWith("\\")) { info.FolderForDataFile += "\\"; } if (!info.FolderForLogFile.EndsWith("\\")) { info.FolderForLogFile += "\\"; } info.FolderForDataFile = info.FolderForDataFile.Replace("[[PROJECT_NAME]]", info.TargetDatabase); info.FolderForLogFile = info.FolderForLogFile.Replace("[[PROJECT_NAME]]", info.TargetDatabase); } }
public TaskResult Backup(DatabaseMediaInfo info) { try { ValidateBackupInput(info); var cmd = Resources.Resources.SqlServer_Backup.FormatLiquid(info); using (var cn = GetConnection(info.ConnectionInfo)) { var execResult = cn.Execute(cmd); return(TaskResult.Success()); } } catch (Exception ex) { return(TaskResult.Failed(ex)); } }
private string GetTemplate(DatabaseMediaInfo info) { var version = GetSqlServerVersion(info.ConnectionInfo); if (info.RestoreOptions.HasFlag(RestoreOptions.Replace)) { return(Resources.Resources.SqlServer_RestoreWithReplace); } switch (version) { case SqlServerVersion.Sql2008: case SqlServerVersion.Sql2012: case SqlServerVersion.Sql2014: return(Resources.Resources.SqlServer2014_RestoreWithFiles); default: //case SqlServerVersion.Sql2016: return(Resources.Resources.SqlServer2016_RestoreWithFiles); } }