JetCreateInstance2 函数

适用于: Windows |Windows Server

JetCreateInstance2 函数

JetCreateInstance2 函数用于分配数据库引擎的新实例,以便在单个进程中使用,并指定显示名称。

Windows XP:JetCreateInstance2 是在 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
    );

parameters

pinstance

将接收新创建的实例的输出缓冲区。

szInstanceName

指定要创建的实例的唯一字符串标识符。 此字符串在托管数据库引擎的给定进程中必须是唯一的。

注意 NULL 值被视为实例的有效字符串标识符。 只有一个实例可能具有 NULL 字符串标识符。

szDisplayName

要创建的实例的显示名称。 如果此参数不存在,则其值假定为 NULL。

grbit

保留供将来使用。 如果此参数不存在,则假定其值为零。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errInstanceNameInUse

指定的实例名称已用于此过程。

JET_errInvalidParameter

提供的其中一个参数包含意外值,或者包含与另一个参数的值组合时没有意义的值。 当 pinstance 为 NULL 时,JetCreateInstance 可能会发生这种情况。

JET_errRunningInOneInstanceMode

操作失败,因为当数据库引擎在单实例模式 (Windows 2000 兼容模式) 时无法使用该操作。

JET_errTooManyInstances

无法创建新实例,因为已达到最大实例数。 支持的最大实例数是使用 jetSetSystemParameter配置JET_paramMaxInstances

成功后,将分配一个新实例,并返回该实例的标识符。 此时,实例的所有系统参数都将具有全局默认系统参数的值。 分配实例后,需要在以后终止和/或释放该实例。

失败时,将返回表示失败原因的错误,并且不会分配任何实例。

备注

实例必须通过对 JetInit 的调用进行初始化,然后才能被 JetSetSystemParameter 以外的任何项使用。

调用 JetTerm 函数会销毁实例,即使从未使用 JetInit 初始化该实例。 任何时间可以创建的最大实例数由 JET_paramMaxInstances 控制,可通过调用 JetSetSystemParameter 进行配置。 实例是数据库引擎的可恢复性单位。 它控制用于保护一组数据库文件中数据完整性的所有文件的生命周期。 这些文件包括检查点文件和事务日志文件。

如果函数成功,数据库引擎将自动更改为多实例模式,作为此调用的副作用。 如果应用程序希望进程中仅允许一个实例,则应使用 JetInit 在 Windows 2000 兼容模式下启动数据库引擎。

如果存在, szDisplayName 参数将用于标识事件日志等位置的实例,或者通过 JetGetInstanceInfoJetOSSnapshotFreeze) 等函数 (备份应用程序等其他调用方。 如果未提供显示名称,则将改用唯一 的 szInstanceName 参数(如果存在),否则将返回空字符串。 如果引擎未设置运行模式,则在此调用后,它将设置为多实例模式。

可能运行多个 Jet 实例的进程的典型启动顺序如下:

  • JetCreateInstance2 的调用,该调用将分配和命名实例。

  • 为该实例多次调用 JetSetSystemParameter ,以便设置不同的系统参数。 请注意,对于每个实例,某些系统参数需要是唯一的, (如 JET_paramSystemPathJET_paramLogFilePath) 因此,其中每个参数很可能都需要设置。

  • 使用 JetInitJetInit2 启动实例。 若要终止和/或释放实例,请使用 JetTermJetTerm2

如果这是要启动的第一个实例,则在此调用期间将执行一些附加步骤,以便进行基本的系统初始化和配置。 其中许多步骤可能会导致从JET_errOutOfMemory开始出现特定错误,但其他步骤 (请参阅返回值,了解) 的详细信息。

要求

要求

客户端

需要 Windows Vista 或 Windows XP。

服务器

需要 Windows Server 2008 或 Windows Server 2003。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetCreateInstance2W (Unicode) 和 JetCreateInstance2A (ANSI) 。

另请参阅

JET_ERR
JET_INSTANCE
JetCreateInstance
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2