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) 。

另請參閱

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService