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)); } }
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); }
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(); } } }
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); } }