예제 #1
0
        public void AvailabilityGroupRepository_RemoveFromAvailabilityGroup()
        {
            // Act
            availabilityGroupRepository.RemoveFromAvailabilityGroup("edds");

            // Assert
            Assert.Pass("no result returned");
        }
예제 #2
0
        /// <summary>
        /// Initiates deployment and indicates results
        /// </summary>
        /// <param name="workingDirectory">the working directory to that has the scripts</param>
        /// <param name="isRetry">indicates if the current install attempt is a retry attempt</param>
        /// <returns>result set</returns>
        internal MigrationResultSet Execute(string workingDirectory, bool isRetry = false)
        {
            var connectionString = this.connectionFactory.GetTargetConnectionString(
                deploymentSettings.DatabaseName,
                deploymentSettings.Server,
                deploymentSettings.CredentialInfo);

            var timeout = ReadRoundhouseTimeoutValue(this.configurationRepository);
            var results = roundHouseManager.Run(
                connectionString,
                workingDirectory,
                deploymentSettings.CreateScriptName,
                deploymentSettings.DatabaseName,
                deploymentSettings.Server,
                timeout);

            if (isRetry == false &&
                results.Success == false &&
                results.Messages.Any(m =>
                                     m.Severity == LogSeverity.Error &&
                                     m.Message.Contains("SqlException") &&
                                     m.Message.Contains(@"involved in a database mirroring session or an availability group")))
            {
                // remove the database from the availability group and then retry deployment
                var removed = availabilityGroupRepository.RemoveFromAvailabilityGroup(deploymentSettings.DatabaseName);
                if (removed)
                {
                    results = this.RetryDeployment(workingDirectory, results);
                }
            }
            else if (isRetry == false &&
                     results.Success == false)
            {
                results = this.RetryDeployment(workingDirectory, results);
            }

            if (results.Success)
            {
                // Mute down the logging on Success
                results.Messages = results.Messages.Select(m =>
                {
                    // Prepend the messages with their oringinal severity in case we do need them again
                    m.Message  = $"[{m.Severity}] -- {m.Message}";
                    m.Severity = LogSeverity.Debug;
                    return(m);
                }).ToList();
            }

            //Clean up AppData
            if (!this.keepWorkingDirectory)
            {
                fileService.CleanUpAppDataDirectory();
            }

            //Return migration results
            return(results);
        }