JetCompact 函式
適用于: Windows |Windows Server
JetCompact 函式
JetCompact函式會建立現有資料庫的複本。 複本會壓縮成最適合使用的狀態。 複製資料中的資料將會根據為索引建立時為索引選擇的量值來封裝。 如此一來,壓縮的資料可能會盡可能密集地儲存。 或者,壓縮的資料可能會保留後續記錄成長或索引插入的空間。
JET_ERR JET_API JetCompact(
__in JET_SESID sesid,
__in JET_PCSTR szDatabaseSrc,
__in JET_PCSTR szDatabaseDest,
__in JET_PFNSTATUS pfnStatus,
__in_opt JET_CONVERT* pconvert,
__in JET_GRBIT grbit
);
參數
sesid
要用於這個呼叫的會話。
szDatabaseSrc
將會壓縮的源資料庫。
szDatabaseDest
要用於壓縮資料庫的名稱。
pfnStatus
回呼函式,可透過資料庫壓縮作業定期呼叫以報告進度。
pconvert
用來指定可用來讀取源資料庫的替代 ESE DLL 的指標,並提供 JetCompact 作業的選擇性參數,以將資料庫從舊版轉換為較新的版本格式。 此功能已在 Windows Server 2003 中停止。
grbit
指定下列選項之零或多個位群組。
值 |
意義 |
---|---|
JET_bitCompactRepair |
當源資料庫已知損毀時使用。 它可啟用一組新的行為,以盡可能從源資料庫擷取資料。 已設定此選項的JetCompact可能會傳回JET_errSuccess,但不會複製源資料庫中建立的所有資料。 將會略過源資料庫損毀部分的資料。 |
JET_bitCompactStats |
讓 JetCompact 將源資料庫的統計資料傾印到名為 DFRGINFO.TXT 的檔案。 統計資料包括源資料庫中每個資料表的名稱、每個資料表中的資料列數目、每個資料表中所有資料列的總大小、每個資料表中所有資料列的總大小、類型JET_coltypLongText或JET_coltypLongBinary大小足以與記錄分開儲存、叢集索引分葉頁面數目、 和長值分葉頁數。 此外,包括源資料庫大小、目的地資料庫、資料庫壓縮所需的時間、暫存資料庫空間的摘要統計資料也會全部傾印。 |
傳回值
此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
描述 |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errClientRequestToStopJetService |
無法完成作業,因為與會話相關聯之實例上的所有活動因 JetStopService呼叫而停止。 |
JET_errFeatureNotAvailable |
已提供非 Null pconvert 指標,但所使用的 ESE 版本不支援轉換功能。 此功能已在 Windows Server 2003 版本的 ESE 中移除。 |
JET_errInstanceUnavailable |
無法完成作業,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 此錯誤只會由 Windows XP 和更新版本傳回。 |
JET_errInTransaction |
呼叫會話位於交易內。 JetCompact 必須由任何交易以外的會話呼叫。 |
JET_errNotInitialized |
無法完成作業,因為與會話相關聯的實例尚未初始化。 |
JET_errRestoreInProgress |
無法完成作業,因為與會話相關聯的實例上正在進行還原作業。 |
JET_errSessionSharingViolation |
同一個會話不能同時用於一個以上的執行緒。 此錯誤只會由 Windows XP 和更新版本傳回。 |
JET_errTermInProgress |
無法完成作業,因為與會話相關聯的實例正在關閉。 |
成功時,源資料庫會複製到目的地資料庫。 目的地資料庫處於最佳狀態,例如,所有資料表索引都位於連續的邏輯磁碟空間中。 每個索引頁面會填補到最初在源資料庫中建立索引時所設定的數量。 除非指定修復選項,否則所有資料和中繼資料設定都會以完整逼真度複製。 如果指定了修復選項,可能尚未複製源資料庫的某些資料。
失敗時,目的地資料庫可能存在,但不是源資料庫的完整複本。
備註
壓縮資料庫也可用來將資料庫從舊版格式升級至較新版。 選擇性參數是 pconvert,其中包含一個結構,可保存舊版 DLL 的描述,以用於讀取源資料庫格式。 此功能已在 Windows Server 2003 中停止。 在 Windows Server 2003 之後,新版本的 ESE 一律能夠讀取舊版的資料庫格式,因此不需要這項功能。
在建立資料表和索引時,指定壓縮作業之後所需的資料密度。 密度必須介於 20% 到 100%。 如果資料庫主要是讀取且未更新,應用程式會將密度設定為 100%,以減少查詢處理期間的 I/O 作業數目。 不過,如果資料經常更新,且作業會隨著記錄一起儲存的資料大小增加,或經常插入新資料,應用程式會選擇較低的密度,讓更新更頻繁地找到可用的資源。 壓縮資料庫的作業會根據應用程式選擇的填滿來理想地設定資料庫。
資料庫壓縮是離線作業。 資料庫正在使用時無法執行。 因此,通常會在開發應用程式的建置程式中完成,以本身的形式傳遞資料集。
離線資料庫壓縮會觸及資料庫中的每一個資料,而且可用來檢查資料庫的一致性。 如果資料庫有疑問,則可以加以壓縮。 如果從壓縮找不到錯誤,則已知資料庫處於 ESE 的有效狀態。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 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 |
實作為 JetCompactW (Unicode) 和 JetCompactA (ANSI) 。 |