コード例 #1
0
        private void PerformTargetServerValidation()
        {
            DatabaseTasksHelper.CheckServerObjectForCopyTask(this.ActivateOnServer, new Task.TaskErrorLoggingDelegate(base.WriteError), this.m_targetServer);
            if (this.CommandType == MoveActiveMailboxDatabase.CommandTypes.MoveSingleDatabase)
            {
                DatabaseCopy   databaseCopy;
                DatabaseCopy[] array;
                DatabaseTasksHelper.CheckDatabaseCopyForCopyTask(this.m_database, new Task.TaskErrorLoggingDelegate(this.m_output.WriteError), this.m_targetServer, out databaseCopy, out array);
            }
            if (this.m_dag == null)
            {
                this.m_dag = ((IConfigurationSession)base.DataSession).Read <DatabaseAvailabilityGroup>(this.m_targetServer.DatabaseAvailabilityGroup);
            }
            IADDatabaseAvailabilityGroup dag = ADObjectWrapperFactory.CreateWrapper(this.m_dag);

            if (AmBestCopySelectionHelper.IsServerInDacAndStopped(dag, new AmServerName(this.m_targetServer.Name)))
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorServerDacedAndNotStarted(this.m_dag.Name, this.m_targetServer.Name)), ErrorCategory.InvalidOperation, null);
            }
            DatabaseTasksHelper.CheckReplayServiceRunningOnNode(this.m_targetAmServer, new Task.TaskErrorLoggingDelegate(base.WriteError));
            DagTaskHelper.CheckStoreIsRunning(new Task.TaskErrorLoggingDelegate(base.WriteError), this.m_targetAmServer);
            if (this.MountDialOverride != DatabaseMountDialOverride.Lossless)
            {
                base.VerifyIsWithinScopes((IConfigurationSession)base.DataSession, this.m_targetServer, true, new DataAccessTask <Database> .ADObjectOutOfScopeString(Strings.ErrorServerOutOfScope));
            }
        }
コード例 #2
0
        private void InternalValidateServerMode()
        {
            this.ResolveServerParameters();
            DatabaseTasksHelper.CheckServerObjectForCopyTask(this.Server, new Task.TaskErrorLoggingDelegate(base.WriteError), this.m_server);
            if (this.m_server.DatabaseAvailabilityGroup == null)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorSourceServerNotInDag(this.m_server.Name)), ErrorCategory.InvalidOperation, this.m_server);
            }
            DatabaseAvailabilityGroup databaseAvailabilityGroup = ((IConfigurationSession)base.DataSession).Read <DatabaseAvailabilityGroup>(this.m_server.DatabaseAvailabilityGroup);

            if (databaseAvailabilityGroup == null)
            {
                base.WriteError(new InconsistentADException(Strings.InconsistentServerNotInDag(this.m_server.Name, this.m_server.DatabaseAvailabilityGroup.ToString())), ErrorCategory.InvalidOperation, this.m_server);
            }
            DagTaskHelper.PreventTaskWhenTPREnabled(databaseAvailabilityGroup, this);
        }
コード例 #3
0
        private void InternalValidateServerMode()
        {
            this.ResolveParameters();
            Server server;
            MailboxServerIdParameter serverIdParam;

            if (this.CommandType == MoveActiveMailboxDatabase.CommandTypes.MoveAwayFromServer)
            {
                server        = this.m_sourceServer;
                serverIdParam = this.Server;
            }
            else
            {
                server        = this.m_targetServer;
                serverIdParam = this.ActivatePreferredOnServer;
            }
            DatabaseTasksHelper.CheckServerObjectForCopyTask(serverIdParam, new Task.TaskErrorLoggingDelegate(base.WriteError), server);
            if (server.DatabaseAvailabilityGroup == null)
            {
                this.m_output.WriteError(new InvalidOperationException(Strings.ErrorSourceServerNotInDag(server.Name)), ErrorCategory.InvalidOperation, server.Identity);
            }
            this.m_dag = ((IConfigurationSession)base.DataSession).Read <DatabaseAvailabilityGroup>(server.DatabaseAvailabilityGroup);
            if (this.m_dag == null)
            {
                this.m_output.WriteError(new InconsistentADException(Strings.InconsistentServerNotInDag(server.Name, server.DatabaseAvailabilityGroup.ToString())), ErrorCategory.InvalidOperation, server.Identity);
            }
            if (this.m_dag.ThirdPartyReplication == ThirdPartyReplicationMode.Enabled)
            {
                this.m_output.WriteError(new InvalidTPRTaskException(base.MyInvocation.MyCommand.Name), ErrorCategory.InvalidOperation, server.Identity);
            }
            base.VerifyIsWithinScopes((IConfigurationSession)base.DataSession, server, true, new DataAccessTask <Database> .ADObjectOutOfScopeString(Strings.ErrorServerOutOfScope));
            if (this.CommandType == MoveActiveMailboxDatabase.CommandTypes.MoveAwayFromServer)
            {
                Database[] databases = null;
                this.PreventMoveOfActiveSeedingSource(this.m_sourceAmServer, databases);
                if (this.TargetServerSpecified)
                {
                    this.PerformTargetServerValidation();
                }
            }
        }
コード例 #4
0
        public static void ValidateDatabaseCopyActionTask(DatabaseCopy databaseCopy, bool allowInvalidDbCopy, bool fCheckDbReplicated, IConfigDataProvider session, ObjectId rootId, Task.TaskErrorLoggingDelegate writeError, LocalizedString mdbNotUniqueError, LocalizedString?singleDbCopyError, out Server server)
        {
            string databaseName = databaseCopy.DatabaseName;

            server = null;
            Database database = databaseCopy.GetDatabase <Database>();

            DatabaseTasksHelper.CheckDatabaseForCopyTaskImpl(database, fCheckDbReplicated, writeError, singleDbCopyError);
            if (database.Recovery)
            {
                writeError(new InvalidOperationException(Strings.ErrorInvalidOperationOnRecoveryMailboxDatabase(database.Name)), ErrorCategory.InvalidOperation, database.Identity);
            }
            if (databaseCopy.HostServer != null)
            {
                MailboxServerIdParameter serverIdParam = new MailboxServerIdParameter(databaseCopy.HostServer);
                server = databaseCopy.Session.Read <Server>(databaseCopy.HostServer);
                DatabaseTasksHelper.CheckServerObjectForCopyTask(serverIdParam, writeError, server);
                return;
            }
            if (!allowInvalidDbCopy && !databaseCopy.IsHostServerValid)
            {
                writeError(new InvalidOperationException(Strings.ErrorDbCopyHostServerInvalid(databaseCopy.Name)), ErrorCategory.InvalidData, databaseCopy);
            }
        }