Freigeben über


JetSetSessionContext-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetSetSessionContext-Funktion

Die Funktion JetSetSessionContext des aktuellen Threads mit bestimmten Kontextnummer eine Sitzung zugeordnet. Diese Zuordnung überschreibt die standardmäßige Engine-Anforderung, dass eine Transaktion für eine bestimmte Sitzung vollständig auf dem gleichen Thread erfolgen muss.

JET_ERR JET_API JetSetSessionContext(
  __in          JET_SESID sesid,
  __in          JET_API_PTR ulContext
);

Parameter

sesid

Die Sitzung für diesen Aufruf verwenden.

ulContext

Ein eindeutiger Bezeichner, der in dieser Sitzung zugeordnet werden sollen.

Return Value

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errClientRequestToStopJetService

Der Vorgang kann nicht abgeschlossen werden, da alle Aktivitäten auf die Instanz, die die Sitzung zugeordnet ist aufgrund eines Aufrufs von JetStopServicebehoben ist.

JET_errInstanceUnavailable

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die die Sitzung zugeordnet ist, ein schwerwiegender Fehler, der erforderlich sind aufgetreten, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen.

Windows XP:  Dieser Wert wird in Windows XP eingeführt.

JET_errInvalidParameter

Einen Parameter, der bereitgestellt wurde, die einen unerwarteten Wert enthalten sind, oder die Kombination der Parameterwerte für verschiedene ein unerwartetes Ergebnis zurückgegeben. Dieser Fehler wird unter den folgenden Bedingungen von JetSetSessionContext zurückgegeben werden:

  • UlContext ist NULL

  • UlContext ist-1

JET_errNotInitialized

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die die Sitzung zugeordnet ist noch nicht initialisiert wurde.

JET_errRestoreInProgress

Der Vorgang kann nicht abgeschlossen werden, da eine Wiederherstellung ausgeführt auf die Instanz wird, der die Sitzung zugeordnet ist.

JET_errSessionContextAlreadySet

Die Sitzung konnte nicht dem aktuellen Thread zugeordnet werden, da es bereits ein Thread zugeordnet wurde.

JET_errTermInProgress

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die die Sitzung zugeordnet ist Herunterfahren.

Wenn diese Funktion erfolgreich ist, wird die Sitzung des aktuellen Threads zugeordnet werden. Keine Änderung an den Zustand der Datenbank erfolgt.

Wenn diese Funktion fehlschlägt, wird der Sitzungszustand bleibt unverändert. Keine Änderung an den Zustand der Datenbank erfolgt.

Anmerkungen

Eine Sitzung ist für die Dauer einer Transaktion in der Regel an einen bestimmten Thread gebunden. Dieses Verhalten ist darauf ausgelegt, Anwendungen zu erkennen und zu verhindern, dass die Konzept abgeraten, gemeinsame Nutzung einer einzigen Sitzungs zwischen mehreren Threads unterstützen. Diese einfache Überprüfung funktioniert in manchen Fällen nicht mit der Architektur der Anwendung. Angenommen, wenn die Anwendung gehostet werden, serverseitige-Objekte, die Verwendung eines Threadpools und Transaktionen mehrere Server Anrufe an ein bestimmtes Objekt umfassen klicken Sie dann diesen Schutz möglicherweise einige dieser Aufrufe an JET_errSessionSharingViolation auftreten, obwohl das Verwendungsmuster korrekt ist. Dies ist für COM-Objektserver üblich.

JetSetSessionContext und JetResetSessionContext lösen dieses Problem, indem Sie in dieser Sitzung Freigabe Kontrollkästchen etwas flexibler vornehmen. Beim Starten der Anwendung, um eine Reihe von ESE-API-Aufrufe, die mit einer bestimmten Sitzung zu machen, legt es zuerst des Sitzungskontexts mit einem bestimmten Wert fest. Diese Aktion ordnet die Sitzung an den aufrufenden Thread. Im angegebenen Beispiel kann in diesem Kontext die Adresse des Objekts handeln, das Handle für die JET-Sitzung enthält. Nachdem der ESE-API-Aufrufe vorgenommen wurden, wird die Anwendung des Sitzungskontexts zurückgesetzt. Diese Aktion trennt die Sitzung durch den aufrufenden Thread in. Das Objekt und seine Sitzung können dann von einem anderen Thread verwendet werden, selbst wenn die Sitzung eine aktive Transaktion verfügt.

Es ist wichtig, beachten Sie, dass die Zuordnung nicht funktioniert oder JetSetSessionContext muss vor dem Öffnen einer Transaktionsprotokolls für die Sitzung aufgerufen werden.

JetSetSessionContext ist. Mehrere Threads können versuchen, einen Threadkontext auf der gleichen Sitzung gleichzeitig festgelegt und nur eine gewinnen. Dies kann von der Anwendung als Mittel zum Zuordnen von einer Sitzungs ohne Speichern des externen Status über seine Zuordnung zwischen einem Pool verwendet werden.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Siehe auch

JET_API_PTR
JET_ERR
JetResetSessionContext
JET_SESID
JetStopService