Freigeben über


RestoreClusterDatabase-Funktion (clusapi.h)

[Diese Funktion ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt Anforderungen angegeben sind. Die Unterstützung für diese Funktion wurde in Windows Server 2008 entfernt, und diese Funktion tut nichts und gibt ERROR_CALL_NOT_IMPLEMENTED zurück.]

Stellt die Clusterdatenbank wieder her und startet den Clusterdienst auf dem Knoten , von dem die Funktion aufgerufen wird. Dieser Knoten wird als Wiederherstellungsknoten bezeichnet.

Syntax

DWORD RestoreClusterDatabase(
  [in]           LPCWSTR lpszPathName,
  [in]           BOOL    bForce,
  [in, optional] LPCWSTR lpszQuorumDriveLetter
);

Parameter

[in] lpszPathName

Unicode-Zeichenfolge mit Null-Endung, die den Pfad zur Sicherungsdatei angibt. Clusterkonfigurationsinformationen sind an diesem Speicherort enthalten. Hierbei handelt es sich um vertrauliche Daten, die geschützt werden sollten. Diese Daten können beispielsweise mithilfe einer Zugriffssteuerungsliste geschützt werden, um den Zugriff auf den Speicherort der Daten einzuschränken.

[in] bForce

Bei FALSE wird der Wiederherstellungsvorgang nicht abgeschlossen, wenn einer der folgenden Umstände zutrifft:

  • Andere Knoten sind derzeit aktiv.
  • Das Partitionslayout der aktuellen Quorumressource ist nicht mit dem Partitionslayout der Quorumressource identisch, das beim Erstellen der Sicherung vorhanden war. (Der Begriff "Partitionslayout" bezieht sich auf die Anzahl der Partitionen auf dem Datenträger und die Offsets zu jeder Partition. Die Zuweisungen der Datenträgersignatur und des Laufwerkbuchstabens müssen nicht identisch sein.)
Wenn Sie bForce auf TRUE festlegen, wird der Vorgang unabhängig von diesen vorherigen Umständen fortgesetzt. Der Vorgang kann jedoch aus anderen Gründen weiterhin fehlschlagen.

[in, optional] lpszQuorumDriveLetter

Optional. Gibt den Laufwerkbuchstaben der Quorumressource an, auf der die Clusterdatenbank wiederhergestellt wird. Verwenden Sie diesen Parameter nur, wenn die Quorumressource seit der Sicherung ersetzt wurde. Die Zeichenfolge muss wie folgt formatiert sein:

  • Das erste Zeichen muss alphabetisch sein, d. h. im Bereich 'a'-'z' oder 'A'-'Z'.
  • Das zweite Zeichen muss ein Doppelpunkt (':') sein.
  • Das dritte Zeichen muss ein beendendes NULL -Zeichen ('\0') sein.

Rückgabewert

Wenn der Vorgang erfolgreich ist, gibt die Funktion ERROR_SUCCESS zurück.

Wenn der Vorgang fehlschlägt, gibt die Funktion einen Systemfehlercode zurück. Im Folgenden sind mögliche Fehlercodes aufgeführt.

Rückgabecode Beschreibung
ERROR_CLUSTER_NODE_UP
Der Vorgang ist fehlgeschlagen, da andere Clusterknoten derzeit aktiv sind. Wenn Sie RestoreClusterDatabase erneut aufrufen und bForce auf TRUE festgelegt ist, versucht der Cluster, den Clusterdienst auf den anderen aktiven Knoten herunterzufahren.
ERROR_QUORUM_DISK_NOT_FOUND
Der Vorgang ist fehlgeschlagen, da der in der Sicherung beschriebene Quorumdatenträger nicht mit dem aktuellen Quorumdatenträger übereinstimmt. Wenn Sie RestoreClusterDatabase erneut aufrufen und bForce auf TRUE festgelegt ist, versucht der Cluster, die Signatur und den Laufwerkbuchstaben des aktuellen Quorumdatenträgers in die in der Sicherung gespeicherten Werte zu ändern.

Hinweise

Wenn der Wiederherstellungsvorgang erfolgreich ist, bildet der Wiederherstellungsknoten einen Cluster gemäß den Konfigurationsdaten in der wiederhergestellten Clusterdatenbank. Wenn andere Knoten dem Cluster beitreten, aktualisieren sie ihre Clusterdatenbanken aus der Datenbank auf dem Wiederherstellungsknoten.

Beachten Sie, dass andere Clusterdatenträger als die Quorumressource, die seit der Sicherung hinzugefügt oder geändert wurden, von der wiederhergestellten Clusterdatenbank nicht erkannt werden und offline bleiben, selbst wenn der Wiederherstellungsvorgang erfolgreich ist. Für diese Datenträger müssen neue Ressourcen erstellt werden (siehe Erstellen einer physischen Datenträgerressource).

Das folgende allgemeine Verfahren wird für jede Clusterwiederherstellungsroutine empfohlen:

  1. Rufen Sie RestoreClusterDatabase auf, wobei bForce auf FALSE festgelegt ist und kein Laufwerkbuchstabe angegeben ist. Dies ist der beste Ansatz, da der Vorgang bei erfolgreicher Ausführung keine Konfigurationsänderungen erzwingen muss.
  2. Wenn der erste Aufruf fehlschlägt, lassen Sie den Benutzer entscheiden, ob die Prozedur zum Fortsetzen der Prozedur erzwungen oder das Problem manuell behoben werden soll. Achten Sie darauf, die Auswirkungen jeder Entscheidung zu kommunizieren.
    Rückgabewert Aktion, wenn erzwungen Manuelle Korrektur
    ERROR_CLUSTER_NODE_UP Der Wiederherstellungsvorgang beendet den Clusterdienst auf allen anderen Knoten. Der Benutzer fährt den Clusterdienst auf allen anderen Clusterknoten manuell herunter. Der Befehl Net Stop ClusSvc ist ausreichend; ein vollständiges Herunterschalten ist nicht erforderlich.
    ERROR_QUORUM_DISK_NOT_FOUND Der Benutzer muss den Laufwerkbuchstaben der Quorumressource angeben. Der Wiederherstellungsvorgang ändert die Signatur und den Laufwerkbuchstaben des Datenträgers in die werte, die in der Sicherung gespeichert sind. Der Benutzer partitioniert den Quorumdatenträger neu, sodass das Layout mit dem in der Sicherung gespeicherten Layout identisch ist.
     

    Wenn der Benutzer zustimmt, die Fortsetzung zu erzwingen, rufen Sie RestoreClusterDatabase auf, wobei bForce auf TRUE und der angegebene Laufwerkbuchstaben festgelegt ist (falls zutreffend). Erzwingen garantiert keinen Erfolg. Wenn der Wiederherstellungsvorgang erneut fehlschlägt, testen Sie den Rückgabewert, und reagieren Sie entsprechend.

Beispiele

Das folgende Beispiel veranschaulicht die oben beschriebene Prozedur. Ein vollständigeres Beispiel, das BackupClusterDatabase enthält, finden Sie unter Sichern und Wiederherstellen der Clusterkonfiguration. In diesem Beispiel wird die Headerdatei ClusDocEx.h verwendet, die in der Failoverclusterdokumentation definiert ist.


int main( void )
{
    WCHAR szPath[] = L"c:\\ClusBack\\19991215";
    WCHAR szInput[3];
    BOOL bForce = FALSE;
    DWORD dwResult = ERROR_SUCCESS;

    // First try: no force
    dwResult = RestoreClusterDatabase( szPath, FALSE, NULL );
    
    // Allow user to force shutdown if necessary.
    if( dwResult == ERROR_CLUSTER_NODE_UP )
    {
        wprintf( L"The operation failed because other cluster nodes are currently active. " );
        wprintf( L"The Cluster service must be shut down on all other nodes in order for this operation to succeed." );
        wprintf( L"Enter 'f' to force automatic shutdown, or any other key to exit for manual shutdown:  " );
        fgetws( szInput, 2, stdin );
        if( towupper( szInput[0] ) == L'F' )
            dwResult = RestoreClusterDatabase( szPath, TRUE, NULL );
    }

    // Allow user to locate quorum resource if necessary.
    if( dwResult == ERROR_QUORUM_DISK_NOT_FOUND )
    {
        wprintf( L"\n\nERROR: QUORUM DISK NOT FOUND\n" );
        wprintf( L"The restore routine cannot find a quorum resource with the same partition layout as the quorum resource described in the backup. " );
        wprintf( L"The existing quorum resource must have a layout (number of partitions and offsets to each partition) identical to the layout stored in the backup.\n" );
        wprintf( L"Enter the drive letter of the quorum resource to force continuation, or any non-letter key to exit:  " );
        fgetws( szInput, 3, stdin );
        if( iswalpha( szInput[0] ) )
        {
            szInput[1] = L':';
            szInput[2] = L'\0';
            dwResult = RestoreClusterDatabase( szPath, TRUE, szInput );
        }
    }

    // Only one force attempt per error, then report success or failure. 
    if( dwResult == ERROR_SUCCESS )
    {
        wprintf( L"\n\nSUCCESS\n" );
        wprintf( L"The restore routine succeeded. Start the Cluster service on the other cluster nodes to complete the restore operation." );
        wprintf( L"As nodes join the cluster, they will update their cluster databases to match the restored configuration." ); 
        return 0;
    }
    else
    {
        wprintf( L"RestoreClusterDatabase failed (%d)\n", dwResult );
        return 1;
    }

}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2003 Enterprise, Windows Server 2003 Datacenter
Zielplattform Windows
Kopfzeile clusapi.h
Bibliothek ClusAPI.lib
DLL ClusAPI.dll

Weitere Informationen

BackupClusterDatabase