Функция JetCreateInstance

Область применения: Windows | Сервер Windows

Функция JetCreateInstance

Функция JetCreateInstance выделяет новый экземпляр ядра СУБД для использования в одном процессе.

Windows XP: JetCreateInstance появилась в Windows XP.

    JET_ERR JET_API JetCreateInstance(
      __out         JET_INSTANCE* pinstance,
      __in_opt      const tchar* szInstanceName
    );

Параметры

pinstance

Выходной буфер, который получает только что созданный экземпляр.

szInstanceName

Уникальный идентификатор строки для создаваемого экземпляра. Эта строка должна быть уникальной в рамках заданного процесса, в котором размещается ядро СУБД.

Примечание Значение NULL рассматривается как допустимый идентификатор строки для экземпляра. Только один экземпляр может иметь идентификатор строки NULL.

Возвращаемое значение

Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделе "Расширяемые ошибки подсистемы служба хранилища" и "Параметры обработки ошибок".

Код возврата

Описание

JET_errSuccess

Операция выполнена успешно.

JET_errInstanceNameInUse

Указанное имя экземпляра уже используется для этого процесса.

JET_errInvalidParameter

Один из предоставленных параметров содержал непредвиденное значение или содержал значение, которое не имеет смысла при объединении со значением другого параметра. Это может произойти для JetCreateInstance , если pinstance имеет значение NULL.

JET_errRunningInOneInstanceMode

Не удалось выполнить операцию, так как ее нельзя использовать, если ядро СУБД работает в режиме одиночного экземпляра (Windows режиме совместимости 2000).

JET_errTooManyInstances

Не удалось создать новый экземпляр, так как достигнуто максимальное число экземпляров. Максимальное количество поддерживаемых экземпляров настраивается с помощью JetSetSystemParameter с помощью JET_paramMaxInstances.

При успешном выполнении будет выделен новый экземпляр, и будет возвращен идентификатор для него. На этом этапе все системные параметры для экземпляра будут иметь значения глобальных системных параметров по умолчанию. После выделения экземпляра его необходимо завершить и (или) освободить позже.

При сбое возвращается ошибка, представляющая причину сбоя, и экземпляр не будет выделен.

Remarks

Экземпляр необходимо инициализировать с помощью вызова JetInit , прежде чем он может использоваться любым другим экземпляром, кроме JetSetSystemParameter.

Экземпляр уничтожается вызовом функции JetTerm , даже если этот экземпляр никогда не был инициализирован с помощью JetInit. Максимальное количество экземпляров, которые могут создаваться в любой момент времени, управляется JET_paramMaxInstances, которые можно настроить с помощью вызова JetSetSystemParameter. Экземпляр — это единица восстановления ядра СУБД. Он управляет жизненным циклом всех файлов, используемых для защиты целостности данных в наборе файлов базы данных. К ним относятся файл контрольных точек и файлы журнала транзакций.

Если функция будет выполнена успешно, ядро СУБД будет автоматически изменено на режим с несколькими экземплярами в качестве побочных эффектов этого вызова. Если приложение хочет разрешить только один экземпляр в процессе, JetInit следует использовать для запуска ядра СУБД в режиме совместимости Windows 2000.

При наличии szDisplayName будет использоваться для идентификации экземпляра в таких местах, как журнал событий или других вызывающих объектов, таких как приложения резервного копирования (с помощью таких функций, как JetGetInstanceInfo или JetOSSnapshotFreeze). Если отображаемое имя не указано, вместо него будет использоваться уникальное имя szInstanceName , в противном случае возвращается пустая строка. Если подсистема не настроена в работающем режиме, после этого вызова он будет установлен в режиме с несколькими экземплярами.

Типичная последовательность запуска для процесса, потенциально выполняющего несколько экземпляров Jet:

  • Вызов JetCreateInstance2 , который выделит и присвоит экземпляру имя.

  • Несколько вызовов JetSetSystemParameter для этого экземпляра для задания различных системных параметров. Обратите внимание, что некоторые системные параметры должны быть уникальными для каждого экземпляра (например , JET_paramSystemPath или JET_paramLogFilePath), поэтому, скорее всего, потребуется задать каждый из них.

  • Запустите экземпляр с помощью JetInit или JetInit2. Чтобы завершить или освободить экземпляр, необходимо использовать JetTerm, JetTerm2 .

Если это первый запущенный экземпляр, необходимо выполнить ряд дополнительных шагов, которые будут выполняться во время этого вызова, чтобы выполнить базовую инициализацию системы и конфигурацию. Некоторые из этих действий могут привести к определенным ошибкам, начиная с JET_errOutOfMemory но и других (см. ошибки выше).

Требования

Требование Значение

Клиент

Требуется Windows Vista или Windows XP.

Server

Требуется Windows Server 2008 или Windows Server 2003.

Header

Объявлен в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

Юникод

Реализовано как JetCreateInstanceW (Юникод) и JetCreateInstanceA (ANSI).

См. также:

Расширяемые файлы ядра служба хранилища
JET_ERR
JET_INSTANCE
JetCreateInstance2
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2