JetSetSystemParameter 函数

适用于:Windows |Windows服务器

JetSetSystemParameter 函数

JetSetSystemParameter 函数用于设置数据库引擎的众多配置设置。

    JET_ERR JET_API JetSetSystemParameter(
      __in_out_opt  JET_INSTANCE* pinstance,
      __in          JET_SESID sesid,
      __in          unsigned long paramid,
      __in          JET_API_PTR lParam,
      __in_opt      JET_PCSTR szParam
    );

参数

pinstance

指定要用于此调用的实例。

Windows 2000:对于 Windows 2000,此参数将被忽略,应始终为 NULL

Windows XP:对于 Windows XP 和更高版本,此参数有点重载。 如果引擎在旧模式下运行, (Windows 2000 兼容模式) 仅支持一个实例,则此参数可能是 NULL,也可能包含 JetInit 返回的实际实例。 无论哪种情况,都会从该一个实例读取所有系统参数设置。 如果引擎在多实例模式下运行,则此参数可能是 NULL 或指向使用 JetInitJetCreateIndex 创建的实例的指针。 如果此参数为 NULL ,则读取全局系统参数设置 (或默认) 。 如果此参数是实例,则读取该实例的系统参数设置。

尽管从技术上讲这是一个 out 参数,但此 API 永远不会修改提供的缓冲区的内容。

sesid

指定要用于此调用的会话。

指定后,将忽略指定的实例,并使用与会话关联的实例。

paramid

将设置的系统参数的 ID。 有关系统参数及其属性的完整列表,请参阅 系统参数

lParam

提供要为所选系统参数设置的值(如果该系统参数为整数类型)。

szParam

如果所选的系统参数是字符串类型,则提供所选系统参数的值。

返回值

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

返回代码

描述

JET_errSuccess

操作已成功完成。

Windows Vista:在 Windows Vista 及更高版本上,可以在不更改系统参数的值的情况下返回成功。 有关详细信息,请参阅 Meta Parameters 主题中的JET_paramEnableAdvanced系统参数。

JET_errAlreadyInitialized

实例已使用对 JetInit 的调用进行初始化,因此无法执行此操作。 如果尝试在更改其值后配置系统参数,则 JetSetSystemParameter 可能会发生这种情况,这不会影响数据库引擎的状态。

JET_errClientRequestToStopJetService

无法完成该操作,因为由于调用 JetStopService 而停止了与会话关联的实例上的所有活动。

JET_errIndexTuplesInvalidLimits

指定的元组索引参数是非法的。 仅当将JET_paramIndexTuplesLengthMinJET_paramIndexTuplesLengthMaxJET_paramIndexTuplesToIndexMax设置为非法值时,JetSetSystemParameter 才会返回此错误。

Windows XP 和 Windows Server 2003:这只能在 Windows XP 和 Windows Server 2003 上发生。

JET_errInitInProgress

无法完成该操作,因为正在初始化与会话关联的实例。

JET_errInstanceUnavailable

无法完成该操作,因为与会话关联的实例遇到了一个致命错误,该错误要求撤销对所有数据的访问以保护该数据的完整性。

Windows XP:此错误仅由 Windows XP 和更高版本返回。

JET_errInvalidParameter

提供的参数之一包含意外值,或包含与另一个参数的值组合时没有意义的值。 当以下情况发生时 ,JetSetSystemParameter 可能会发生这种情况:

  • 指定的系统参数 ID 无效或不受支持。

  • 尝试设置字符串值系统参数,其长度超出参数的法律范围。

  • 尝试使用文件路径设置字符串值系统参数,其中绝对路径表示形式的长度超出了该参数的法律范围。

    Windows Vista:这只能在 Windows Vista 及更高版本上发生。

  • 尝试设置一个整数值系统参数,该参数的整数超出参数的法律范围。

  • 尝试使用 NULLJET_UNICODEINDEX指针、无效的 LCID 或不受支持的 LCMapString 标志集设置JET_paramUnicodeIndexDefault。

    Windows Vista:这只能在 Windows Vista 及更高版本上发生。

  • 无法设置指定的系统参数,因为它是只读的。

  • 尝试在调用 JetInit 后设置系统参数,数据库引擎处于单实例模式,并且未指定会话。

    Windows XP 和 Windows Server 2003:这只能在 Windows XP 和 Windows Server 2003 上发生。

  • 指定的系统参数是全局的,并且尝试为该系统参数设置实例特定的值。

    Windows XP 和 Windows Server 2003:这只能在 Windows XP 和 Windows Server 2003 上发生。

  • 指定的系统参数仅为每个实例,并且尝试为该系统参数设置全局值。

    Windows XP 和 Windows Server 2003:这只能在 Windows XP 和 Windows Server 2003 上发生。

JET_errInvalidPath

指定的文件系统路径无效。 仅当设置表示文件系统路径的系统参数时, JetSetSystemParameter 才会返回此错误。 例如, JET_paramSystemPath 可能会返回此错误。

JET_errNotInitialized

无法完成该操作,因为尚未初始化与会话关联的实例。

JET_errRestoreInProgress

无法完成该操作,因为还原操作正在与会话关联的实例上进行。

JET_errTermInProgress

无法完成该操作,因为与会话关联的实例正在关闭。

JET_errInvalidSesid

会话句柄无效或引用已关闭的会话。

在所有情况下都不会返回此错误。 仅尽最大努力验证句柄。

JET_errInvalidInstance

实例句柄无效或引用已关闭的实例。

在所有情况下都不会返回此错误。 仅尽最大努力验证句柄。

Windows Vista:此错误仅由 Windows Vista 及更高版本返回。

成功后,系统参数的设置将设置为所提供的值。

失败时,系统参数的设置将保持不变。

注解

JetSetSystemParameter 执行验证每个系统参数所选设置的差工作。 必须注意不要依赖此验证来强制实施良好的设置。 请密切关注每个系统参数的说明,并遵循这些准则来设置良好的系统参数。

应始终设置一组系统参数,以确保数据库引擎按预期工作。 具体而言,应始终设置影响数据库引擎使用的文件的物理布局的任何系统参数。 有关详细信息,请参阅 系统参数

每个系统参数都有一个默认值。 这些默认值随着时间推移而演变,并且相当任意。 强烈建议应用程序评估所有默认值,以确保它们合适。 如果它们不合适,则应用程序应配置它们。 这很重要,因为其中许多参数可以极大地影响数据库引擎的可靠性、性能和资源利用率。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

Server

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

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetSetSystemParameterW (Unicode) 和 JetSetSystemParameterA (ANSI) 。

另请参阅

JET_API_PTR
JET_ERR
JET_INSTANCE
JET_SESID
JetCreateInstance
JetGetSystemParameter
JetInit
系统参数