JetAttachDatabase2 函数

适用于: Windows |Windows Server

JetAttachDatabase2 函数

JetAttachDatabase2 函数附加用于数据库实例的数据库文件,并指定该数据库的最大大小。 若要使用数据库,随后需要使用 JetOpenDatabase 打开该数据库。

    JET_ERR JET_API JetAttachDatabase2(
      __in          JET_SESID sesid,
      __in          const tchar* szFilename,
      __in          const unsigned long cpgDatabaseSizeMax,
      __in          JET_GRBIT grbit
    );

参数

sesid

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

szFilename

要附加的数据库的名称。

cpgDatabaseSizeMax

数据库的最大大小(以数据库页为单位)。 默认数据库页大小为 4 KB,可以在创建数据库之前使用 JetSetSystemParameter 函数进行更改。

传递零意味着数据库引擎没有强制实施最大值。

grbit

包含用于此调用的选项的一组位,其中包括以下零个或多个内容:

含义

JET_bitDbDeleteCorruptIndexes

如果已设置 JET_paramEnableIndexChecking ,则将删除 Unicode 数据上的所有索引。 有关更多详细信息,请参阅“备注”部分。

JET_bitDbDeleteUnicodeIndexes

无论设置JET_paramEnableIndexChecking如何,都将删除 Unicode 数据上的所有索引。 有关更多详细信息,请参阅“备注”部分。

JET_bitDbReadOnly

防止对数据库进行修改。

JET_bitDbUpgrade

保留供将来使用。

返回值

函数返回 JET_ERR 错误代码之一。 下面是最常返回的 。 (有关此 API 错误的完整列表,请参阅 可扩展存储引擎错误代码。)

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errBackupInProgress

备份期间不允许附加数据库。

JET_errDatabaseFileReadOnly

szFilename 指定的数据库文件必须是可写的。 不能设置 Read-Only 属性,并且正在运行的进程必须具有足够的权限才能写入文件。

JET_errDatabaseInUse

数据库文件已由另一个进程打开。

JET_errDatabaseInvalidPath

szFilename 中提供了无效的路径。 szFilename 必须是非 NULL 且引用有效路径。

JET_errDatabaseSharingViolation

数据库文件已由其他会话附加。

JET_errFileNotFound

szFilename 中给定的文件不存在。

JET_errPrimaryIndexCorrupted

主索引出错。 这可能是由于物理损坏 (,例如磁盘损坏或内存损坏) 。 将上次修改的数据库附加到较旧的操作系统上,并且主索引位于包含 Unicode 数据的列上时,也可能返回它。 有关基于 Unicode 数据的索引的详细信息,请参阅备注。

JET_errSecondaryIndexCorrupted

辅助索引出现错误。 这可能是由于物理损坏 (,例如磁盘损坏或内存损坏) 。 将上次修改的数据库附加到较旧的操作系统上,并且辅助索引位于包含 Unicode 数据的列上时,也可能返回该索引。 有关基于 Unicode 数据的索引的详细信息,请参阅备注。 使用以下命令使用脱机实用工具对数据库进行碎片整理时,将完全重新生成辅助索引: esentutl -d

JET_errTooManyAttachedDatabases

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

JET_wrnDatabaseAttached

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

备注

使用 JetDetachDatabaseJetDetachDatabase2 分离数据库文件。

有关说明,请参阅 JetAttachDatabase

要求

要求

客户端

需要 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

作为 JetAttachDatabase2W (Unicode) 和 JetAttachDatabase2A (ANSI) 实现。

另请参阅

可扩展存储引擎文件
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase
JetCreateDatabase
JetOpenDatabase
JetSetSystemParameter