Funzione JetOSSnapshotFreeze

Si applica a: Windows | Windows Server

Funzione JetOSSnapshotFreeze

La funzione JetOSSnapshotFreeze avvia uno snapshot. Mentre lo snapshot è in corso, non può essere eseguita alcuna attività write-to-disk dal motore.

Windows XP:JetOSSnapshotFreeze è stato introdotto in Windows XP.

    JET_ERR JET_API JetOSSnapshotFreeze(
      __in          const JET_OSSNAPID snapId,
      __out         unsigned long* pcInstanceInfo,
      __out         JET_INSTANCE_INFO** paInstanceInfo,
      __in          const JET_GRBIT grbit
    );

Parametri

snapId

Identificatore della sessione snapshot.

pcInstanceInfo

Numero di istanze attualmente in esecuzione nel motore che fanno parte della sessione snapshot.

paInstanceInfo

Matrice di strutture, una per ogni istanza in esecuzione che fa parte della sessione snapshot, che descrive l'istanza e i database che ne fanno parte.

grbit

Opzioni per questa chiamata. Questo parametro è riservato per uso futuro e l'unico valore valido supportato è 0.

Valore restituito

Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.

Codice restituito

Descrizione

JET_errSuccess

Operazione riuscita.

JET_errInvalidParameter

I puntatori forniti per i parametri di output sono NULL, la sessione snapshot non è valida o il parametro grbit non è valido.

JET_errOSSnapshotInvalidSequence

La sessione snapshot non è nello stato appropriato per avviare un blocco( ad esempio, un blocco precedente non è riuscito in questa sessione prima).

JET_errOSSnapshotNotAllowed

Il motore non è in uno stato in cui è possibile eseguire uno snapshot. Uno o più backup di streaming sono già in corso oppure una o più istanze stanno eseguendo i passaggi di ripristino o terminando.

JET_errOSSnapshotInvalidSnapId

L'identificatore per la sessione snapshot non è valido.

JET_errOutOfMemory

La funzione non è riuscita a causa di una condizione di memoria insufficiente.

JET_errOutOfThreads

La funzione non è riuscita perché non è stato possibile avviare un nuovo thread che esegue il blocco.

Se questa funzione ha esito positivo, non verranno eseguite operazioni di I/O di scrittura per i file di database o per i file di log che fanno parte di istanze bloccate. Inoltre, le informazioni sull'istanza verranno compilate correttamente e dovranno essere liberate in un secondo momento chiamando JetFreeBuffer con il puntatore alla matrice di informazioni sull'istanza restituita.

Se questa funzione ha esito negativo, il motore continuerà a funzionare normalmente con gli I/O che si verificano come di consueto. Non è necessario chiamare JetOSSnapshotThaw se il blocco ha esito negativo. Inoltre, le informazioni sull'istanza non verranno compilate, pertanto non è necessario liberare questa risorsa.

Commenti

Durante il periodo di blocco, non saranno presenti operazioni di I/O di scrittura rilasciate nei database collegati o nei log delle transazioni, anche se potrebbero essere presenti operazioni di I/O di scrittura rilasciate nei database temporanei o nei file di streaming.

Lo stato in cui i database e i file di log saranno durante il blocco (lo stato in cui i file si trovano in un'immagine snapshot del volume) sarà tale che sarà possibile un normale ripristino se tali file vengono ripristinati in un secondo momento.

Poiché non sono presenti operazioni di scrittura durante il periodo di blocco, le normali chiamate API nel motore potrebbero essere bloccate per tale intervallo. L'applicazione client deve essere in grado di gestire le chiamate API che potrebbero richiedere più tempo se si verifica un blocco.

A causa dei possibili effetti descritti in precedenza, si verifica un timeout interno dopo il quale la sessione snapshot arresterà la fase di blocco anche se le API che eseguono il disgelo o l'interruzione non sono state chiamate. Il valore del timeout può essere modificato usando il parametro di sistema JET_paramOSSnapshotTimeout . Si noti che l'intervallo di blocco tipico è compreso nell'intervallo di 10 secondi con il timeout predefinito in circa 60 secondi.

Requisiti

Requisito Valore

Client

Richiede Windows Vista o Windows XP.

Server

Richiede Windows Server 2008 o Windows Server 2003.

Intestazione

Dichiarato in Esent.h.

Libreria

Usare ESENT.lib.

DLL

Richiede ESENT.dll.

Unicode

Implementato come JetOSSnapshotFreezeW (Unicode) e JetOSSnapshotFreezeA (ANSI).

Vedere anche

JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw