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