Example #1
0
        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));
            }
        }
Example #2
0
        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.");
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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));
            }
        }
Example #5
0
        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);
            }
        }