JetCreateInstance 函式
適用于: Windows |Windows Server
JetCreateInstance 函式
JetCreateInstance函式會設定資料庫引擎的新實例,以用於單一進程。
Windows XP:JetCreateInstance 是在 Windows XP 中引進。
JET_ERR JET_API JetCreateInstance(
__out JET_INSTANCE* pinstance,
__in_opt const tchar* szInstanceName
);
參數
pinstance
接收新建立實例的輸出緩衝區。
szInstanceName
要建立之實例的唯一字串識別碼。 這個字串在裝載資料庫引擎的指定進程中必須是唯一的。
注意 Null 值會被視為實例的有效字串識別碼。 只有一個實例可能有 Null 字串識別碼。
傳回值
此函式會傳回具有下列其中一個傳回碼 的JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errInstanceNameInUse |
指定的實例名稱已經用於此程式。 |
JET_errInvalidParameter |
提供的其中一個參數包含非預期的值,或包含與另一個參數值結合時沒有意義的值。 當Pinstance為Null時,JetCreateInstance可能會發生這種情況。 |
JET_errRunningInOneInstanceMode |
作業失敗,因為它無法在資料庫引擎以單一實例模式運作時使用, (Windows 2000 相容性模式) 。 |
JET_errTooManyInstances |
無法建立新的實例,因為已達到實例數目上限。 使用 JetSetSystemParameter 使用 JET_paramMaxInstances設定支援的實例數目上限。 |
成功時,將會配置新的實例,並傳回其識別碼。 此時,實例的所有系統參數都會有全域預設系統參數的值。 一旦配置實例,則必須在稍後終止和/或釋放實例。
失敗時,會傳回代表失敗原因的錯誤,而且不會配置任何實例。
備註
實例必須透過對 JetInit 的呼叫進行初始化,才能供 JetSetSystemParameter以外的任何專案使用。
即使從未使用JetInit初始化該實例,仍會透過JetTerm函式的呼叫來終結實例。 任何一次可建立的實例數目上限是由 JET_paramMaxInstances所控制,可由 JetSetSystemParameter呼叫來設定。 實例是資料庫引擎的復原能力單位。 它會控制用來保護一組資料庫檔案中資料完整性的所有檔案生命週期。 這些檔案包括檢查點檔案和交易記錄檔。
如果函式成功,資料庫引擎會自動變更為多重實例模式,作為此呼叫的副作用。 如果應用程式只想允許進程中的一個實例,則 JetInit 應該用來在 Windows 2000 相容性模式中啟動資料庫引擎。
如果有的話, szDisplayName 會用來識別事件記錄檔之類的位置,或透過 JetGetInstanceInfo 或 JetOSSnapshotFreeze) 之類的函式,將備份應用程式 (的其他呼叫端識別實例。 如果未提供顯示名稱,則會改用唯一 的 szInstanceName ,否則會傳回空字串。 如果引擎未設定執行模式,在此呼叫之後,它會設定為多重實例模式。
可能執行多個 Jet 實例之進程的一般啟動順序為:
對 JetCreateInstance2 的呼叫,它會配置並命名實例。
針對該實例對 JetSetSystemParameter 進行多個呼叫,以設定不同的系統參數。 請注意,某些系統參數每個實例都必須是唯一的 (,例如 JET_paramSystemPath 或 JET_paramLogFilePath) ,因此最可能需要設定每個實例。
使用 JetInit 或 JetInit2啟動實例。 若要終止和/或釋放實例,必須使用 JetTerm、 JetTerm2 。
如果這是要啟動的第一個實例,則會在此呼叫期間執行一些額外的步驟,以便進行基本系統初始化和設定。 其中一些步驟可能會導致特定錯誤從JET_errOutOfMemory開始,但其他步驟也會 (看到上述錯誤) 。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista 或 Windows XP。 |
Server |
需要 Windows Server 2008 或 Windows Server 2003。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
Unicode |
實作為 JetCreateInstanceW (Unicode) 和 JetCreateInstanceA (ANSI) 。 |
另請參閱
可延伸儲存引擎檔案
JET_ERR
JET_INSTANCE
JetCreateInstance2
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2