JetCreateDatabase 函数

适用于: Windows |Windows Server

JetCreateDatabase 函数

JetCreateDatabase 函数创建并附加要与 ESE 数据库引擎一起使用的数据库文件。 调用将 cpgDatabaseSizeMax 设置为零的 JetCreateDatabase2 与调用将 szConnect 设置为 NULL 的 JetCreateDatabase 相同。 目前,每个实例最多可以创建七个数据库。

    JET_ERR JET_API JetCreateDatabase(
      __in          JET_SESID sesid,
      __in          JET_PCSTR szFilename,
      __in_opt      JET_PCSTR szConnect,
      __out         JET_DBID* pdbid,
      __in          JET_GRBIT grbit
    );

parameters

sesid

用于 API 调用的数据库会话上下文。

szFilename

要创建的数据库的名称。

szConnect

保留供将来使用。 设置为 NULL。

pdbid

指向缓冲区的指针,该缓冲区在成功调用时包含数据库的标识符。 失败时,该值未定义。

grbit

指定以下零个或多个选项的一组位。

含义

JET_bitDbOverwriteExisting

默认情况下,如果调用 JetCreateDatabase 并且数据库已存在,则 API 调用将失败,并且不会覆盖原始数据库。 JET_bitDbOverwriteExisting更改此行为,旧数据库将被新数据库覆盖。 Windows XP 及更高版本。

JET_bitDbRecoveryOff

JET_bitDbRecoveryOff关闭日志记录。 如果设置此位,将无法在发生灾难性事件后重播日志文件并将数据库恢复到一致的可用状态。

JET_bitDbShadowingOff

设置JET_bitDbShadowingOff将禁用某些内部数据库结构的复制, (隐藏) 。 复制这些结构是为了恢复能力,因此设置JET_bitDbShadowingOff将删除该复原能力。

返回值

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

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errDatabaseDuplicate

szFilename 中名为 的数据库已存在。 返回此错误时,不会附加数据库。

JET_errDatabaseInUse

如果请求了独占访问权限,但无法授予独占访问权限,或者另一个会话已以独占方式打开数据库,则可以返回 。

JET_errDatabaseInvalidPages

cpgDatabaseSizeMax 大于数据库中允许的最大页数时返回。 当前最大值为2147483646 (0x7ffffffe) 。

JET_errDatabaseInvalidPath

szFilename 中提供了无效的路径。 szFilename 必须为非 NULL。 默认情况下, szFilename 必须指向存在的目录。 如果设置了 JET_paramCreatePathIfNotExist ,则会创建路径 (请参阅 JetSetSystemParameter) 。

JET_errDatabaseLocked

指示另一个会话已使用 JET_bitDbExclusive) 以独占方式 (打开数据库。

JET_errDatabaseNotFound

以前未附加数据库 (请参阅 JetAttachDatabase) 。

JET_errDatabaseSharingViolation

数据库文件已由另一个会话附加。

JET_errInTransaction

尝试在事务中创建数据库。

JET_errInvalidDatabase

尝试打开不是有效数据库文件的文件。

JET_errOneDatabasePerSession

尝试打开多个数据库,并设置了JET_paramOneDatabasePerSession。 请参阅 数据库参数

JET_errOutOfMemory

操作失败,因为无法分配内存。

JET_errTooManyAttachedDatabases

每个实例只能附加有限数量的数据库。 目前限制为每个实例七个数据库。

JET_wrnDatabaseAttached

一个非严重警告,指示此会话已附加数据库文件。

JET_wrnFileOpenReadOnly

JET_wrnFileOpenReadOnly指示文件附加为只读,但 JetCreateDatabase 未传递JET_bitDbReadOnly。 数据库仍以只读访问权限打开。

备注

如果 szFilename 中指定的数据库存在且未传入JET_bitDbOverwriteExisting,则 API 调用将失败。 如果传入JET_bitDbOverwriteExisting,将首先删除旧数据库文件。

如果 API 创建数据库文件,然后遇到另一个错误,它将清理并删除该文件。

JetCreateDatabase 将隐式打开数据库。 不一定随后调用 JetOpenDatabase

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 专业版。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetCreateDatabaseW (Unicode) 和 JetCreateDatabaseA (ANSI) 。

另请参阅

可扩展存储引擎文件
JET_ERR
JET_DBID
JET_GRBIT
JET_SESID
JetAttachDatabase
JetCloseDatabase
JetCreateDatabase2
JetOpenDatabase
JetSetSystemParameter
系统参数