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
);
parameters
pinstance
接收新创建的实例的输出缓冲区。
szInstanceName
要创建的实例的唯一字符串标识符。 此字符串在托管数据库引擎的给定进程中必须是唯一的。
注意 NULL 值被视为实例的有效字符串标识符。 只能有一个实例具有 NULL 字符串标识符。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errSuccess |
操作已成功完成。 |
JET_errInstanceNameInUse |
指定的实例名称已用于此过程。 |
JET_errInvalidParameter |
提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。 当 pinstance 为 NULL 时,JetCreateInstance 可能会发生这种情况。 |
JET_errRunningInOneInstanceMode |
操作失败,因为数据库引擎在单实例模式 (Windows 2000 兼容模式) 运行时无法使用该操作。 |
JET_errTooManyInstances |
无法创建新实例,因为已达到最大实例数。 支持的最大实例数是使用 JetSetSystemParameter使用 JET_paramMaxInstances 配置的。 |
成功后,将分配一个新实例,并返回该实例的标识符。 此时,实例的所有系统参数都将具有全局默认系统参数的值。 分配实例后,需要在以后终止和/或释放该实例。
失败时,将返回表示失败原因的错误,并且不会分配任何实例。
备注
实例必须通过对 JetInit 的调用进行初始化,然后才能由 JetSetSystemParameter 以外的任何内容使用。
即使该实例从未使用 JetInit 初始化,实例也会通过对 JetTerm 函数的调用来销毁。 任何时间可以创建的最大实例数由 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 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
实现为 JetCreateInstanceW (Unicode) 和 JetCreateInstanceA (ANSI) 。 |
另请参阅
可扩展存储引擎文件
JET_ERR
JET_INSTANCE
JetCreateInstance2
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2