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

將設定之系統參數的識別碼。 如需系統參數及其屬性的完整清單,請參閱 系統參數

lParam

如果選取的系統參數屬於整數類型,請提供要為選取的系統參數設定的值。

szParam

如果選取的系統參數為字串類型,請提供所選取系統參數的值。

傳回值

此函式會傳回具有下列其中一個傳回碼 的JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱可延伸儲存體引擎錯誤錯誤處理參數

傳回碼

描述

JET_errSuccess

作業已成功完成。

Windows Vista:在 Windows Vista 和更新版本上,可以傳回成功,而不會變更系統參數的值。 如需詳細資訊,請參閱 Meta Parameters 主題中的JET_paramEnableAdvanced系統參數。

JET_errAlreadyInitialized

實例已使用 JetInit 的呼叫進行初始化,因此無法執行此作業。 當嘗試在其值變更後設定系統參數時, JetSetSystemParameter 可能會發生這種情況,而不會影響資料庫引擎的狀態。

JET_errClientRequestToStopJetService

因為與會話相關聯的實例上的所有活動因為對 JetStopService的呼叫而停止,所以無法完成作業。

JET_errIndexTuplesInvalidLimits

指定的 Tuple 索引參數不合法。 只有在將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 時,可能會發生此問題:

  • 指定的系統參數識別碼無效或不受支援。

  • 嘗試使用長度超出參數合法範圍的字串來設定字串值系統參數。

  • 嘗試使用檔案路徑設定字串值系統參數,其中其絕對路徑表示的長度超出該參數的法律範圍。

    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 中宣告。

程式庫

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

實作為 JetSetSystemParameterW (Unicode) 和 JetSetSystemParameterA (ANSI) 。

另請參閱

JET_API_PTR
JET_ERR
JET_INSTANCE
JET_SESID
JetCreateInstance
JetGetSystemParameter
JetInit
系統參數