Funzione JetCreateInstance2

Si applica a: Windows | Windows Server

Funzione JetCreateInstance2

La funzione JetCreateInstance2 viene usata per allocare una nuova istanza del motore di database da usare in un singolo processo, con un nome visualizzato specificato.

Windows XP:JetCreateInstance2 è stato introdotto in Windows XP.

    JET_ERR JET_API JetCreateInstance2(
      __out         JET_INSTANCE* pinstance,
      __in_opt      const tchar* szInstanceName,
      __in_opt      const tchar* szDisplayName,
      __in          JET_GRBIT grbit
    );

Parametri

pinstance

Buffer di output che riceverà l'istanza appena creata.

szInstanceName

Specifica un identificatore di stringa univoco per l'istanza da creare. Questa stringa deve essere univoca all'interno di un determinato processo che ospita il motore di database.

Nota Un valore NULL viene considerato come un identificatore di stringa valido per un'istanza di . Una sola istanza può avere un identificatore di stringa NULL.

szDisplayName

Nome visualizzato per l'istanza da creare. Quando questo parametro non è presente, si presuppone che il relativo valore sia NULL.

grbit

Riservato per utilizzi futuri. Quando questo parametro non è presente, si presuppone che il relativo valore sia zero.

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_errInstanceNameInUse

Il nome dell'istanza specificato è già in uso per questo processo.

JET_errInvalidParameter

Uno dei parametri forniti conteneva un valore imprevisto o conteneva un valore che non ha senso se combinato con il valore di un altro parametro. Questa situazione può verificarsi per JetCreateInstance quando la pinstance è NULL.

JET_errRunningInOneInstanceMode

L'operazione non è riuscita perché non può essere usata quando il motore di database funziona in modalità a istanza singola (modalità di compatibilità di Windows 2000).

JET_errTooManyInstances

Impossibile creare una nuova istanza perché è stato raggiunto il numero massimo di istanze. Il numero massimo di istanze supportate viene configurato usando JetSetSystemParameter usando JET_paramMaxInstances.

In caso di esito positivo, verrà allocata una nuova istanza e verrà restituito l'identificatore. A questo punto, tutti i parametri di sistema per l'istanza avranno i valori dei parametri di sistema predefiniti globali. Una volta allocata un'istanza, deve essere terminata e/o liberata in un secondo momento.

In caso di errore, verrà restituito un errore che rappresenta la causa dell'errore e non verrà allocata alcuna istanza.

Commenti

Un'istanza di deve essere inizializzata con una chiamata a JetInit prima che possa essere usata da qualsiasi elemento diverso da JetSetSystemParameter.

Un'istanza viene eliminata definitivamente da una chiamata alla funzione JetTerm , anche se tale istanza non è mai stata inizializzata usando JetInit. Il numero massimo di istanze che possono essere create contemporaneamente è controllato da JET_paramMaxInstances, che può essere configurato da una chiamata a JetSetSystemParameter. Un'istanza è l'unità di recuperabilità per il motore di database. Controlla il ciclo di vita di tutti i file usati per proteggere l'integrità dei dati in un set di file di database. Questi file includono il file del checkpoint e i file di log delle transazioni.

Se la funzione ha esito positivo, il motore di database verrà automaticamente modificato in modalità a istanze multipli come effetto collaterale di questa chiamata. Se l'applicazione desidera consentire una sola istanza nel processo, JetInit deve essere usato per avviare il motore di database in modalità di compatibilità di Windows 2000.

Se presente, il parametro szDisplayName verrà usato per identificare l'istanza in posizioni come Registro eventi o verso altri chiamanti come le applicazioni di backup (tramite funzioni come JetGetInstanceInfo o JetOSSnapshotFreeze). Se il nome visualizzato non viene specificato, verrà invece usato il parametro szInstanceName univoco, se presente. In caso contrario, verrà restituita una stringa vuota. Se il motore non ha impostato la modalità in esecuzione, dopo questa chiamata verrà impostata la modalità a istanze multipli.

La tipica sequenza di avvio per un processo che esegue potenzialmente più istanze Jet è:

  • Chiamata a JetCreateInstance2 che alloca e denomina l'istanza.

  • Più chiamate a JetSetSystemParameter per tale istanza per impostare parametri di sistema diversi. Si noti che alcuni parametri di sistema devono essere univoci per ogni istanza ,ad esempio JET_paramSystemPath o JET_paramLogFilePath, pertanto è molto probabile che ognuno di questi sia necessario impostare.

  • Avviare l'istanza usando JetInit o JetInit2. Per terminare e/o liberare un'istanza, usare JetTerm o JetTerm2.

Se si tratta della prima istanza da avviare, durante questa chiamata verranno eseguiti alcuni passaggi aggiuntivi per eseguire l'inizializzazione e la configurazione di base del sistema. Alcuni di questi passaggi potrebbero causare errori specifici a partire da JET_errOutOfMemory, ma anche altri (vedere Valori restituiti per altre informazioni).

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 JetCreateInstance2W (Unicode) e JetCreateInstance2A (ANSI).

Vedere anche

JET_ERR
JET_INSTANCE
JetCreateInstance
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2