JetCreateDatabase2 函数
适用于: Windows |Windows Server
JetCreateDatabase2 函数
JetCreateDatabase2 函数创建并附加一个数据库文件,该文件将用于指定最大数据库大小的 ESE 数据库引擎。 调用将 cpgDatabaseSizeMax 设置为零的 JetCreateDatabase2 与调用将 szConnect 设置为 NULL 的 JetCreateDatabase 相同。 目前,每个实例最多可以创建七个数据库。
JET_ERR JET_API JetCreateDatabase2(
__in JET_SESID sesid,
__in const tchar* szFilename,
__in const unsigned long cpgDatabaseSizeMax,
__out JET_DBID* pdbid,
__in JET_GRBIT grbit
);
参数
sesid
用于 API 调用的数据库会话上下文。
szFilename
要创建的数据库的名称。
cpgDatabaseSizeMax
数据库的最大大小(以数据库页为单位)。 默认数据库页大小为 4 KB,可以在创建数据库之前使用 JetSetSystemParameter 进行更改。
传递零意味着数据库引擎没有强制实施最大值。
pdbid
指向缓冲区的指针,该缓冲区在成功调用时包含数据库的标识符。 失败时,该值未定义。
grbit
一组指定以下选项的零个或多个位。
值 |
含义 |
---|---|
JET_bitDbOverwriteExisting |
默认情况下,如果调用 JetCreateDatabase 或 JetCreateDatabase2 并且数据库已存在,则 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 创建数据库文件,然后遇到另一个错误,它将清理并删除该文件。
JetCreateDatabase2 将隐式打开数据库。 无需随后调用 JetOpenDatabase。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
Unicode |
实现为 JetCreateDatabase2W (Unicode) 和 JetCreateDatabase2A (ANSI) 。 |
另请参阅
可扩展存储引擎文件
JET_ERR
JET_DBID
JET_GRBIT
JET_SESID
JetAttachDatabase
JetCloseDatabase
JetCreateDatabase
JetOpenDatabase
JetSetSystemParameter
系统参数