Condividi tramite


Funzione RestoreClusterDatabase (clusapi.h)

[Questa funzione è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Il supporto per questa funzione è stato rimosso in Windows Server 2008 e questa funzione non esegue alcuna operazione e restituisce ERROR_CALL_NOT_IMPLEMENTED.]

Ripristina il database del cluster e riavvia il servizio cluster nel nodo da cui viene chiamata la funzione. Questo nodo è denominato nodo di ripristino.

Sintassi

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

Parametri

[in] lpszPathName

Stringa Unicode con terminazione Null che specifica il percorso del file di backup. Le informazioni di configurazione del cluster sono contenute in questa posizione; si tratta di dati sensibili che devono essere protetti. Ad esempio, questi dati possono essere protetti usando un elenco di controllo di accesso per limitare l'accesso alla posizione in cui sono archiviati i dati.

[in] bForce

Se FALSE, l'operazione di ripristino non verrà completata se si applica una delle circostanze seguenti:

  • Altri nodi sono attualmente attivi.
  • Il layout della partizione della risorsa quorum corrente non è identico al layout di partizione della risorsa quorum sul posto al momento dell'esecuzione del backup. Il termine "layout di partizione" si riferisce al numero di partizioni sul disco e agli offset in ogni partizione. Le assegnazioni di firma del disco e lettera di unità non devono essere identiche.
Se si imposta bForce su TRUE , l'operazione procede indipendentemente da queste circostanze precedenti; Tuttavia, l'operazione potrebbe comunque non riuscire per altri motivi.

[in, optional] lpszQuorumDriveLetter

facoltativo. Identifica la lettera di unità della risorsa quorum in cui verrà ripristinato il database del cluster . Usare questo parametro solo se la risorsa quorum è stata sostituita dopo l'esecuzione del backup. La stringa deve essere formattata come segue:

  • Il primo carattere deve essere alfabetico, ovvero nell'intervallo 'a'-'z' o 'A'-'Z'.
  • Il secondo carattere deve essere un punto (':').
  • Il terzo carattere deve essere null di terminazione ('\0').

Valore restituito

Se l'operazione ha esito positivo, la funzione restituisce ERROR_SUCCESS.

Se l'operazione non riesce, la funzione restituisce un codice di errore di sistema. Di seguito sono riportati i possibili codici di errore.

Codice restituito Descrizione
ERROR_CLUSTER_NODE_UP
L'operazione non è riuscita perché altri nodi del cluster sono attualmente attivi. Se si chiama nuovamente RestoreClusterDatabase con bForce impostato su TRUE, il cluster tenterà di arrestare il servizio Cluster negli altri nodi attivi.
ERROR_QUORUM_DISK_NOT_FOUND
L'operazione non è riuscita perché il disco quorum descritto nel backup non corrisponde al disco quorum corrente. Se si chiama nuovamente RestoreClusterDatabase con bForce impostato su TRUE, il cluster tenterà di modificare la firma e la lettera di unità del disco quorum corrente ai valori archiviati nel backup.

Commenti

Se l'operazione di ripristino ha esito positivo, il nodo di ripristino costituisce un cluster in base ai dati di configurazione nel database del cluster ripristinato. Man mano che altri nodi si uniscono al cluster, aggiornano i database del cluster dal database nel nodo di ripristino.

Si noti che i dischi del cluster diversi dalla risorsa quorum che sono stati aggiunti o modificati dopo che il backup è stato eseguito non verranno riconosciuti dal database del cluster ripristinato e rimarranno offline anche se l'operazione di ripristino ha esito positivo. È necessario creare nuove risorse per questi dischi (vedere Creazione di una risorsa disco fisico).

Per qualsiasi routine di ripristino del cluster è consigliata la procedura generale seguente:

  1. Chiamare RestoreClusterDatabase con bForce impostato su FALSE e nessuna lettera di unità specificata. Questo è l'approccio migliore perché, in caso di esito positivo, l'operazione non deve forzare le modifiche di configurazione.
  2. Se la prima chiamata ha esito negativo, consentire all'utente di decidere se forzare la procedura per continuare o risolvere manualmente il problema. Assicurarsi di comunicare le implicazioni di ogni decisione.
    Valore restituito Azione se forzata Correzione manuale
    ERROR_CLUSTER_NODE_UP L'operazione di ripristino arresterà il servizio cluster in tutti gli altri nodi. L'utente arresta manualmente il servizio cluster in tutti gli altri nodi del cluster. Il comando Net Stop ClusSvc è sufficiente; un'alimentazione completa non è necessaria.
    ERROR_QUORUM_DISK_NOT_FOUND L'utente deve fornire la lettera di unità della risorsa quorum. L'operazione di ripristino modificherà la firma e la lettera di unità del disco ai valori archiviati nel backup. L'utente ripartiziona il disco quorum in modo che il layout sia identico al layout archiviato nel backup.
     

    Se l'utente accetta di forzare la continuazione, chiamare RestoreClusterDatabase con bForce impostato su TRUE e la lettera di unità specificata (se applicabile). La forzatura non garantisce il successo. Se l'operazione di ripristino ha esito negativo, testare il valore restituito e rispondere in modo appropriato.

Esempio

Nell'esempio seguente viene illustrata la procedura descritta in precedenza. Per un esempio più completo che include BackupClusterDatabase, vedere Backup e ripristino della configurazione del cluster. Questo esempio usa il file di intestazione ClusDocEx.h definito nella documentazione del cluster di failover.


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

}

Requisiti

Requisito Valore
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2003 Enterprise, Windows Server 2003 Datacenter
Piattaforma di destinazione Windows
Intestazione clusapi.h
Libreria ClusAPI.lib
DLL ClusAPI.dll

Vedi anche

BackupClusterDatabase