Функция JetInit

Применимо к: Windows | Windows Сервером

Функция JetInit

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

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

Параметры

пинстанце

Экземпляр, используемый для этого вызова.

для Windows 2000 этот параметр игнорируется и всегда должен иметь значение NULL.

для Windows XP и более поздних выпусков использование этого параметра зависит от режима работы ядра. если ядро работает в устаревшем режиме (режим совместимости Windows 2000), где поддерживается только один экземпляр, этот параметр может иметь значение NULL или быть установлен в допустимый выходной буфер, который будет возвращать глобальный экземпляр, созданный в качестве побочного результата инициализации. Для этого выходного буфера необходимо задать значение NULL или JET_instanceNil. Этот экземпляр можно передать в любую другую функцию, использующую экземпляр. Если ядро работает в режиме с несколькими экземплярами, этот параметр должен быть установлен в допустимый входной буфер, содержащий экземпляр, возвращенный экземпляром функции жеткреатеинстанце , который инициализируется.

Комментарии

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

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

Максимальное число экземпляров, которые могут быть созданы за один раз, контролируется JET_paramMaxInstances, который можно настроить с помощью вызова жетсетсистемпараметер. Когда ядро СУБД инициализируется в первый раз, жетинит создаст начальный набор файлов для поддержки этого экземпляра. Эти файлы содержат файл контрольных точек (с именем <JET_paramBaseName> . CHK) — набор зарезервированных файлов журнала транзакций (с именем RES1. LOG и RES2. LOG) — исходный файл журнала транзакций (с именем <JET_paramBaseName> . LOG) и временный файл базы данных (с именем в соответствии с JET_paramTempPath). Если JET_paramRecovery имеет значение OFF, файл контрольных точек и файлы журнала создаваться не будут. Если JET_paramMaxTemporaryTables имеет значение 0, то временный файл базы данных не будет создан. Эти файлы представляют место на диске экземпляра, и управление им должно осуществляться с осторожностью. Если эти файлы повреждены по отдельности или по отношению друг к другу, то данные, хранящиеся в базах данных, связанных с экземпляром, могут быть потеряны.

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

Из-за того, что жетинит выполняет восстановление после сбоя, в случае сбоя может возвращаться почти любая ошибка ядра СУБД. На практике большинство ошибок, возникающих при развертывании, делятся на две категории: повреждение данных и неудачное Управление файлами. Повреждение данных будет очень часто переявляться в следующих или похожих ошибках:

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

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

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

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

функция жетинит ведет себя по-разному, в отношении файлов базы данных, присоединенных к экземпляру, между Windows 2000 и более поздними версиями.

Windows 2000: в Windows 2000 любая база данных, присоединенная к экземпляру во время предыдущего создания этого экземпляра, остается прикрепленной к экземпляру после успешного завершения жетинит . Необязательно вызывать жетаттачдатабасе после жетинит , чтобы получить доступ к базе данных в дальнейшем. Если функция жетаттачдатабасе вызывается после функции жетинит , будет возвращено предупреждение JET_wrnDatabaseAttached. Это предупреждение означает, что вложение базы данных сохранено и может быть проигнорировано.

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

любое приложение, написанное для запуска в Windows 2000 и более поздних выпусках, должно всегда вызывать жетаттачдатабасе после жетинит. если приложение выполняется в Windows 2000, в некоторых случаях должно отобразиться JET_wrnDatabaseAttached. Дополнительные сведения см. в разделе жетаттачдатабасе .

Требования

| | |

Клиент

|

требуется Windows Vista, Windows XP или Windows 2000 Professional.

| |

Сервер

|

требуется Windows server 2008, Windows server 2003 или сервер Windows 2000.

| |

Header

|

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

| |

Библиотека

|

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

| |

КОМПОНОВКИ

|

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

|

См. также:

расширяемые файлы служба хранилища Engine
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
жетаттачдатабасе
жеткреатеинстанце
JetInit3
жетсетсистемпараметер