Функция JetCreateInstance

Применимо к: Windows | Windows Server

Функция 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.

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

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

Комментарии

Экземпляр должен быть инициализирован с помощью вызова 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.

Сервер

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

Верхняя часть

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

Библиотека

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

DLL

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

Юникод

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

См. также:

Файлы расширяемого ядра хранилища
JET_ERR
JET_INSTANCE
JetCreateInstance2
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2