Exchange 2016 Auto Database Switchover

Wer heute Exchange On-Premises betreibt, hat fast immer eine DAG aus zwei oder mehr Servern installiert. Wer quasi "zu klein" ist, um die Verfügbarkeit von Exchange sicherzustellen ist in den meisten Fällen entweder noch auf einer viel älteren Version oder schon auf dem Weg nach Office 365. Aber auch Exchange On-Prem wird von Microsoft weiter entwickelt und mit Exchange 2016 CU2 ist eine neue Funktion eingeführt worden, bei der die Exchange Server die Datenbanken alleine im Rahmen der "Activation Preference" neu verteilen. Die meisten Administratoren werden das aber noch gar nicht bemerkt haben, weil Exchange diesen Prozess per Default nur einmal jede Stunde ausführt.

Wieso, Weshalb, Warum?

Der Grund für diese neue Funktion dürfte mal wieder in der Cloud liegen. Dort betreibt Microsoft eine große Anzahl an Servern und auch diese Werten immer wieder aktualisiert. Ich habe es mittlerweile auch OnPremsie gemerkt, dass bei einem ordentlichen Setup ein Exchange 2016-Server sehr einfach "in Wartung" versetzt werden kann und Exchange sich selbst darum kümmert, dass der Loadbalancer keine Daten mehr zu diesem Server sendet und die Datenbanken auf anderen Servern aktiv geschaltet werden. Damit wird das Patchen schon fast zu einem Kinderspiel und man spart sich vor allem in großen Umgebungen viel Arbeit.

Nachdem ein Server aber "gepatched" ist, dann musste ein Admin danach immer noch manuell prüfen, ob der Server wirklich "gesund" ist und die Replikation funktioniert, eher er dann die vom Server wegverschobenen Datenbanken wieder zurückschieben kann. Und genau dieser Schritt ist nun nicht mehr erforderlich, da Exchange in einer DAG ab Version 2016 CU2 dies alleine macht. Sie patchen also einfach weiter und im Hintergrund verteilt Exchange die Datenbanken entsprechend weiter. Ganz so ist es natürlich nicht, denn wenn der "fertige Server" doch nicht korrekt funktioniert, dann sollten sie dies schon feststellen.

Damit das alles funktioniert, muss natürlich bei jeder Datenbank eine "Activation Preference" hinterlegt sein, die auch entsprechend der gewünschten Verteilung konfiguriert ist, damit am Ende, wenn alle Server wieder Online sind, die Datenbanken auch wieder schön verteilt sind. Damit wird der Aufruf von "RedistributeActiveDatabases.ps1" obsolet, den anscheinend einige Firmen als geplanten Task eingestellt hatten.

Konfiguration des DAG Failover

Auf dem Blog-Eintrag "DAG Activation Preference Behavior Change in Exchange Server 2016 CU2" (https://blogs.technet.microsoft.com/exchange/2016/06/16/dag-activation-preference-behavior-change-in-exchange-server-2016-cu2) hat Microsoft die grundlegende Konfiguration beschrieben. Wobei es da eigentlich nicht viel Einzustellen gibt. Über den Parameter "-PreferenceMoveFrequency" beim Commandlet Set-DatabaseAvailabilityGroup kann das Intervall eingestellt werden, in dem der Replication Service die aktuelle Verteilung evaluiert und ggfls. Datenbanken über einen geordneten SwitchOwer

Set-DatabaseAvailabilityGroup `
   -Identity DAG1 `
    -PreferenceMoveFrequency 01:00:00

Die Zeit ist dabei als "Timespan" im HH:MM:SS-Format anzugeben. Der Default ist 1h

Eventlog Meldungen

Ich habe bei einen der letzten Updates mal das Eventlog eines Servers durchsucht, der nach dem Patchen und der Freigabe nur "Healthy"-Replikate hatte. Nach ca. 1 Stunde hat der Replikationsdienst die Datenbanken auf dem Server "Online" (Status Mounted). Hier die Logs in chronologischer Reihenfolge:

Die folgenden Informationen dienen mir als Referenz und Hilfe beim Suchen. Sie sollten ähnliche Logs auch auf ihren Exchange 2016 Servern finden. Leider habe ich keinen expliziten Eintrag gefunden, der den Start der Analyse festhält.

Der MSExchangeRepl-Service macht immer mal wieder einen "Database redundancy health check". In dem Ergebnis können Sie dann pro Datenbank sehen, auf welchen Server die Datenbank welchen Status hat

Log Name:      Application
Source:        MSExchangeRepl
Date:          2/2/2017 4:10:51 PM
Event ID:      4114
Task Category: Service
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Database redundancy health check passed.
Database copy: DB001
Redundancy count: 4
IsSuppressed: False

Errors:

================
Full Copy Status
================

----------------
Database Copy : DB001\EX20106N2
----------------
WorkerProcessId              : 44432
ActiveDatabaseCopy           : EX20106N1
ActivationPreference         : 4
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 8:48:09 AM
StatusRetrievedTime          : 2/2/2017 2:10:49 PM
InstanceStartTime            : 2/2/2017 8:48:04 AM
LowestLogPresent             : 588666
LastLogInspected             : 589683
LastLogReplayed              : 589683
LastLogCopied                : 589683
LastLogGenerated             : 589683
LastLogGeneratedTime         : 2/2/2017 2:10:49 PM
LastInspectedLogTime         : 2/2/2017 2:10:14 PM
LastReplayedLogTime          : 2/2/2017 2:10:14 PM
LastCopiedLogTime            : 2/2/2017 2:10:14 PM
LastLogInfoFromClusterTime   : 2/2/2017 2:10:19 PM
LastLogInfoFromCopierTime    : 2/2/2017 2:10:49 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N0
----------------
WorkerProcessId              : 45524
ActiveDatabaseCopy           : EX20106N1
ActivationPreference         : 3
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 8:49:07 AM
StatusRetrievedTime          : 2/2/2017 2:10:50 PM
InstanceStartTime            : 2/2/2017 8:48:57 AM
LowestLogPresent             : 588666
LastLogInspected             : 589683
LastLogReplayed              : 589683
LastLogCopied                : 589683
LastLogGenerated             : 589683
LastLogGeneratedTime         : 2/2/2017 2:10:50 PM
LastInspectedLogTime         : 2/2/2017 2:10:14 PM
LastReplayedLogTime          : 2/2/2017 2:10:14 PM
LastCopiedLogTime            : 2/2/2017 2:10:14 PM
LastLogInfoFromClusterTime   : 2/2/2017 2:10:19 PM
LastLogInfoFromCopierTime    : 2/2/2017 2:10:49 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N1
----------------
WorkerProcessId              : 12568
ActiveDatabaseCopy           : EX20106N1
ActivationPreference         : 2
CopyStatus                   : Mounted
Viable                       : False
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 1/1/0001 12:00:00 AM
StatusRetrievedTime          : 2/2/2017 2:10:49 PM
InstanceStartTime            : 2/2/2017 11:14:26 AM
LowestLogPresent             : 588666
LastLogInspected             : 0
LastLogReplayed              : 0
LastLogCopied                : 0
LastLogGenerated             : 589683
LastLogGeneratedTime         : 1/1/0001 12:00:00 AM
LastInspectedLogTime         : 1/1/0001 12:00:00 AM
LastReplayedLogTime          : 1/1/0001 12:00:00 AM
LastCopiedLogTime            : 1/1/0001 12:00:00 AM
LastLogInfoFromClusterTime   : 2/2/2017 2:10:19 PM
LastLogInfoFromCopierTime    : 2/2/2017 2:10:49 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N7
----------------
WorkerProcessId              : 15764
ActiveDatabaseCopy           : EX20106N1
ActivationPreference         : 1
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 1:10:47 PM
StatusRetrievedTime          : 2/2/2017 2:10:51 PM
InstanceStartTime            : 2/2/2017 1:10:08 PM
LowestLogPresent             : 588666
LastLogInspected             : 589683
LastLogReplayed              : 589683
LastLogCopied                : 589683
LastLogGenerated             : 589683
LastLogGeneratedTime         : 2/2/2017 2:10:51 PM
LastInspectedLogTime         : 2/2/2017 2:10:14 PM
LastReplayedLogTime          : 2/2/2017 2:10:14 PM
LastCopiedLogTime            : 2/2/2017 2:10:14 PM
LastLogInfoFromClusterTime   : 2/2/2017 2:10:19 PM
LastLogInfoFromCopierTime    : 2/2/2017 2:10:51 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0

Hier liegt die Datenbank auf den Servern 2 0 1 und 7. Sie liegt aktuell auf Server 1 aber laut Activation Preference sollte Sie auf Server 7 liegen. Da alle Instanzen "healthy" sind, wird der verlustfreie Move angestoßen:

Log Name:      Application
Source:        MSExchangeRepl
Date:          2/2/2017 4:37:18 PM
Event ID:      2090
Task Category: Action
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Database: DB001\EX20106N7
Mailbox server: EX20106N7.msxfaq.net

A failover or switchover occurred. Database DB001\EX20106N7 will be mounted with no data loss.

Die Datenbank beginnt die Logs nachzufahren.

Log Name:      Application
Source:        ESE
Date:          2/2/2017 4:37:18 PM
Event ID:      301
Task Category: Logging/Recovery
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Information Store - DB001 (15764) DB001: The database engine has begun replaying logfile C:\Disks\Disk4Part2\LOGs\DB001\E04.log. 
 
Previous Log Processing Stats: 
[1] 5173.197109 -309.703640 (10996) CM +J(CM:10996, PgRf:6901442, Rd:20177/102, Dy:23209/950551, Lg:443205937/1336874)
 +M(C:670124K, Fs:434545, WS:269392K # 260332K, PF:762728K # 752152K, P:762728K).

Dann wird die Datenbank abgehängt. Da ich hier auf dem Zielserver bin. ist dies wohl die Meldung bezüglich der Log-Replikation. Auf dem aktiven Server gibt es eine ähnliche Meldung. Eine kurze Unterbrechung ist also beim Anwender zu erwarten.

Log Name:      Application
Source:        ESE
Date:          2/2/2017 4:37:20 PM
Event ID:      329
Task Category: Logging/Recovery
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Information Store - DB001 (15764) DB001: The database engine has fired callback for detach of database 
C:\Disks\Disk4Part2\DBs\DB001\DB001.edb during recovery at log position (0008FFC5,0001,0000). The callback returned 0. 

For more information, click http://www.microsoft.com/contentredirect.asp.

Auf dem Zielserver wird dann die Datenbank online genommen.

Log Name:      Application
Source:        ESE
Date:          2/2/2017 4:37:20 PM
Event ID:      105
Task Category: General
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Information Store - DB001 (15764) DB001: The database engine started a new instance (0). (Time=5176 seconds) 
 
Additional Data:
 lgposV2[] = 0008FE13:0040:0000 - 0008FFC4:0001:0000 - 0008FFC4:00CB:0EE5 - 0008FFC5:0001:0000 (0008FE79:0001:0000)
ForwardLogsV2 = 157.768300 s - 102 lgens
 
 
Internal Timing Sequence: 
[1] 0.001958 +J(0) +M(C:0K, Fs:454, WS:1796K # 0K, PF:6848K # 0K, P:6848K)
[2] 0.001809 +J(0) +M(C:167584K, Fs:692, WS:2432K # 0K, PF:169204K # 157972K, P:169204K)
[3] 0.000020 +J(0) +M(C:0K, Fs:5, WS:20K # 0K, PF:64K # 64K, P:64K)
[4] 0.204450 +J(0) +M(C:0K, Fs:1830, WS:4584K # 0K, PF:4652K # 4652K, P:4652K)
[5] 0.001270 +J(0) +M(C:0K, Fs:7, WS:28K # 0K, PF:4K # 4K, P:4K)
[6] 0.021857 +J(0) +M(C:0K, Fs:173, WS:92K # 0K, PF:12K # 648K, P:12K)
[7] -
[8] 5173.892566 -309.703640 (10996) CM +J(CM:10996, PgRf:6901442, Rd:20177/102, Dy:23209/950551, Lg:443205937/1336874) +M(C:670124K, Fs:488912, WS:277496K # 274592K, PF:770528K # 771168K, P:770528K) + 433 lgens
[9] 2.004057 -1.988480 (39) CM -0.000458 (53) CB +J(CM:39, PgRf:1383, Rd:44/0, Dy:69/2950, Lg:821994/4029) +M(C:72K, Fs:1161, WS:3404K # 2444K, PF:164K # 0K, P:164K)
[10] 0.001266 -0.000078 (1) CB +J(0) +M(C:0K, Fs:0, WS:-1020K # 0K, PF:-1020K # 0K, P:-1020K)
[11] 0.004503 -0.002112 (1) CB +J(CM:0, PgRf:0, Rd:0/0, Dy:0/0, Lg:57/3) +M(C:0K, Fs:292, WS:-552K # 0K, PF:-792K # 0K, P:-792K) + 1 lgens
[12] -
[13] 0.118997 +J(CM:0, PgRf:0, Rd:0/0, Dy:0/0, Lg:4712/3) +M(C:0K, Fs:1254, WS:-840K # 0K, PF:-3108K # 0K, P:-3108K)
[14] 0.000022 +J(0)
[15] 0.000412 +J(0)
[16] 0.059834 +J(0) +M(C:0K, Fs:2, WS:0K # 0K, PF:0K # 0K, P:0K).

Was all die Diagnosezahlen im Detail bedeuten, kann ich noch nicht sagen. Die nächste Meldung protokolliert dann den erfolgt, dass die Datenbank angebunden werden konnte.

Log Name:      Application
Source:        ESE
Date:          2/2/2017 4:37:21 PM
Event ID:      326
Task Category: General
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Information Store - DB001 (15764) DB001: The database engine attached a database (1, C:\Disks\Disk4Part2\DBs\DB001\DB001.edb). (Time=0 seconds) 
 
Saved Cache: 0 1 
Additional Data: lgposAttach = 00020268:9B790020:9B790020 
 
Internal Timing Sequence: 
[1] 0.000002 +J(0)
[2] -
[3] -
[4] -
[5] 0.0 +J(0)
[6] 0.000237 +J(CM:0, PgRf:0, Rd:0/0, Dy:0/0, Lg:50/1) +M(C:0K, Fs:8, WS:0K # 0K, PF:0K # 0K, P:0K)
[7] -
[8] 0.077452 -0.077231 (1) CM +J(CM:1, PgRf:26, Rd:0/1, Dy:0/0, Lg:0/0) +M(C:-48K, Fs:8, WS:-16K # 0K, PF:-48K # 0K, P:-48K)
[9] 0.000116 +J(CM:0, PgRf:41, Rd:0/0, Dy:0/0, Lg:0/0) +M(C:0K, Fs:1, WS:4K # 0K, PF:0K # 0K, P:0K)
[10] 0.006807 -0.006744 (1) CM +J(CM:1, PgRf:3, Rd:0/1, Dy:0/0, Lg:0/0) +M(C:-28K, Fs:9, WS:8K # 0K, PF:-28K # 0K, P:-28K)
[11] 0.000202 +J(CM:0, PgRf:186, Rd:0/0, Dy:0/0, Lg:0/0)
[12] 0.0 +J(0)
[13] 0.0 +J(0)
[14] 0.0 +J(0).

Gefolgt von der Meldung, dass Sie nun erfolgreich gemounted ist:

Log Name:      Application
Source:        MSExchangeIS
Date:          2/2/2017 4:37:22 PM
Event ID:      40018
Task Category: High Availability
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Active database DB001 (34d90e40-1b06-4ed2-84e8-f71654ec6ff1) was successfully mounted.

Process id: 15764
Mount time: 4.2589233 seconds
Log generation: 0x8FFC6
Previous state: 2

Der Prozess hat laut Eventlog ca. 4 Sekunden gedauert. Danach wird noch einmal ein HealthCheck gemacht:

Log Name:      Application
Source:        MSExchangeRepl
Date:          2/2/2017 5:10:51 PM
Event ID:      4114
Task Category: Service
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX20106N7.msxfaq.net
Description:
Database redundancy health check passed.
Database copy: DB001
Redundancy count: 4
IsSuppressed: False

Errors:

================
Full Copy Status
================

----------------
Database Copy : DB001\EX20106N2
----------------
WorkerProcessId              : 30704
ActiveDatabaseCopy           : EX20106N7
ActivationPreference         : 4
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 2:37:28 PM
StatusRetrievedTime          : 2/2/2017 3:10:19 PM
InstanceStartTime            : 2/2/2017 2:37:23 PM
LowestLogPresent             : 588666
LastLogInspected             : 589885
LastLogReplayed              : 589884
LastLogCopied                : 589885
LastLogGenerated             : 589885
LastLogGeneratedTime         : 2/2/2017 3:10:19 PM
LastInspectedLogTime         : 2/2/2017 3:10:11 PM
LastReplayedLogTime          : 2/2/2017 3:10:04 PM
LastCopiedLogTime            : 2/2/2017 3:10:11 PM
LastLogInfoFromClusterTime   : 2/2/2017 3:10:04 PM
LastLogInfoFromCopierTime    : 2/2/2017 3:10:17 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N0
----------------
WorkerProcessId              : 50152
ActiveDatabaseCopy           : EX20106N7
ActivationPreference         : 3
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 2:37:27 PM
StatusRetrievedTime          : 2/2/2017 3:10:20 PM
InstanceStartTime            : 2/2/2017 2:37:24 PM
LowestLogPresent             : 588666
LastLogInspected             : 589885
LastLogReplayed              : 589884
LastLogCopied                : 589885
LastLogGenerated             : 589885
LastLogGeneratedTime         : 2/2/2017 3:10:20 PM
LastInspectedLogTime         : 2/2/2017 3:10:11 PM
LastReplayedLogTime          : 2/2/2017 3:10:04 PM
LastCopiedLogTime            : 2/2/2017 3:10:11 PM
LastLogInfoFromClusterTime   : 2/2/2017 3:10:04 PM
LastLogInfoFromCopierTime    : 2/2/2017 3:10:19 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N1
----------------
WorkerProcessId              : 16640
ActiveDatabaseCopy           : EX20106N7
ActivationPreference         : 2
CopyStatus                   : Healthy
Viable                       : True
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 2/2/2017 2:37:25 PM
StatusRetrievedTime          : 2/2/2017 3:10:20 PM
InstanceStartTime            : 2/2/2017 2:37:23 PM
LowestLogPresent             : 588666
LastLogInspected             : 589885
LastLogReplayed              : 589884
LastLogCopied                : 589885
LastLogGenerated             : 589885
LastLogGeneratedTime         : 2/2/2017 3:10:20 PM
LastInspectedLogTime         : 2/2/2017 3:10:11 PM
LastReplayedLogTime          : 2/2/2017 3:10:04 PM
LastCopiedLogTime            : 2/2/2017 3:10:11 PM
LastLogInfoFromClusterTime   : 2/2/2017 3:10:04 PM
LastLogInfoFromCopierTime    : 2/2/2017 3:10:19 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0
----------------
Database Copy : DB001\EX20106N7
----------------
WorkerProcessId              : 15764
ActiveDatabaseCopy           : EX20106N7
ActivationPreference         : 1
CopyStatus                   : Mounted
Viable                       : False
ActivationSuspended          : False
ErrorEventId                 : 0
LastStatusTransitionTime     : 1/1/0001 12:00:00 AM
StatusRetrievedTime          : 2/2/2017 3:10:20 PM
InstanceStartTime            : 2/2/2017 2:37:25 PM
LowestLogPresent             : 588666
LastLogInspected             : 0
LastLogReplayed              : 0
LastLogCopied                : 0
LastLogGenerated             : 589885
LastLogGeneratedTime         : 1/1/0001 12:00:00 AM
LastInspectedLogTime         : 1/1/0001 12:00:00 AM
LastReplayedLogTime          : 1/1/0001 12:00:00 AM
LastCopiedLogTime            : 1/1/0001 12:00:00 AM
LastLogInfoFromClusterTime   : 2/2/2017 3:10:04 PM
LastLogInfoFromCopierTime    : 2/2/2017 3:10:20 PM
LastLogInfoIsStale           : False
ActivationDisabledAndMoveNow : False
AutoActivationPolicy         : Unrestricted
HAComponentOffline           : False
NodeStatus                   : Up
ReplayLagEnabled             : Disabled
ReplayLagPlayDownReason      : None
LogReplaySuspendReason       : None
ReplayLagPercentage          : 0

Die Datenbank wurde durch Exchange selbst nach einiger Zeit erfolgreich auf den Server umgeschwenkt, der in der Activation Preference an der Stelle 1 steht.

Manuelles Verlagern

Wenn Sie dann versuchen eine Datenbank auf den Server zu verschieben, dann bekommen Sie eine Fehlermeldung wie die Folgende:

[PS] C:\ >Move-ActiveMailbox Database TESTDB -ActivateOnServer EX02

Server "EX02.msxfaq.de" is enabled for DatabaseCopyActivationDisabledAndMoveNow. Moving databases to such
servers maybe ineffective because the system will automatically attempt to move again as soon as a healthy copy is
detected.

Manuelles Sperren

Nun kann es ja doch mal passieren, dass Sie einen Server "leerfahren" aber nicht gleich als "unverfügbar" konfigurieren wollen. Wie kann man aber verhindern, dass einzelne Datenbanken oder überhaupt Datenbanken wieder auf den Server zurück geschoben werden, die diesen Server als erste Präferenz haben?. Auch dies ist per PowerShell möglich:

# einen Server blockieren, dass er als Ziel für Umverteilung genutzt wird
set-MailboxServer EX02 `
   -DatabaseCopyAutoActivationPolicy blocked `
   -DatabaseCopyActivationDisabledAndMoveNow:$true

# Server wieder freigeben
set-MailboxServer EX02 `
   -DatabaseCopyAutoActivationPolicy unrestricted `
   -DatabaseCopyActivationDisabledAndMoveNow:$false

Weitere Links