Fonction JetCompact

S’applique à : Windows | Windows Server

Fonction JetCompact

La fonction JetCompact effectue une copie d’une base de données existante. La copie est compactée à un état optimal pour l’utilisation. Les données des données copiées seront empaquetées en fonction des mesures choisies pour les index lors de la création d’index. De cette façon, les données compactées peuvent être stockées de manière aussi dense que possible. Les données compactées peuvent également réserver de l’espace pour la croissance des enregistrements ou les insertions d’index ultérieures.

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

Paramètres

sesid

Session à utiliser pour cet appel.

szDatabaseSrc

Base de données source qui sera compactée.

szDatabaseDest

Nom à utiliser pour la base de données compactée.

pfnStatus

Fonction de rappel qui peut être appelée régulièrement via l’opération de compactage de base de données pour signaler la progression.

pconvert

Pointeur utilisé pour désigner une autre DLL ESE qui peut être utilisée pour lire la base de données source et fournir des paramètres facultatifs pour une opération JetCompact qui convertit une base de données d’un format antérieur vers une version ultérieure. Cette fonctionnalité a été abandonnée dans Windows Server 2003.

grbit

Groupe de bits spécifiant zéro ou plusieurs des options suivantes.

Valeur

Signification

JET_bitCompactRepair

Utilisé lorsque la base de données source est connue pour être endommagée. Il permet d’activer tout un ensemble de nouveaux comportements destinés à récupérer autant de données que possible à partir de la base de données source. JetCompact avec ce jeu d’options peut retourner JET_errSuccess mais pas copier toutes les données créées dans la base de données source. Les données qui se trouve dans des parties endommagées de la base de données source seront ignorées.

JET_bitCompactStats

Permet à JetCompact de vider les statistiques de la base de données source dans un fichier nommé DFRGINFO.TXT. Les statistiques incluent le nom de chaque table dans la base de données source, le nombre de lignes de chaque table, la taille totale en octets de toutes les lignes de chaque table, la taille totale en octets de toutes les colonnes de type JET_coltypLongText ou JET_coltypLongBinary qui étaient suffisamment grandes pour être stockées séparément de l’enregistrement, le nombre de pages feuilles d’index cluster, et le nombre de pages feuilles à valeur longue. En outre, les statistiques récapitulatives, y compris la taille de la base de données source, la base de données de destination, le temps nécessaire au compactage de la base de données et l’espace temporaire de la base de données sont également vidées.

Valeur renvoyée

Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, consultez Erreurs du moteur de stockage extensible et Paramètres de gestion des erreurs.

Code de retour

Description

JET_errSuccess

L’opération s’est terminée avec succès.

JET_errClientRequestToStopJetService

Il n’est pas possible d’effectuer l’opération, car toutes les activités sur le instance associées à la session ont cessé à la suite d’un appel à JetStopService.

JET_errFeatureNotAvailable

Un pointeur pconvert non NULL a été fourni, mais la version d’ESE utilisée ne prend pas en charge la fonctionnalité de conversion. Cette fonctionnalité a été supprimée dans la version Windows Server 2003 d’ESE.

JET_errInstanceUnavailable

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session a rencontré une erreur irrécupérable qui exige que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures.

JET_errInTransaction

La session appelante se trouve dans une transaction. JetCompact doit être appelé par une session en dehors de toute transaction.

JET_errNotInitialized

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé.

JET_errRestoreInProgress

Il n’est pas possible d’effectuer l’opération, car une opération de restauration est en cours sur le instance associé à la session.

JET_errSessionSharingViolation

La même session ne peut pas être utilisée pour plusieurs threads en même temps.

Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures.

JET_errTermInProgress

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt.

En cas de réussite, la base de données source est copiée dans la base de données de destination. La base de données de destination est dans un état optimal, par exemple, tous les index de table se trouvent dans l’espace disque logique adjacent. Chaque page d’index est ajoutée à la quantité configurée lorsque les index ont été créés à l’origine dans la base de données source. Tous les paramètres de données et de métadonnées sont copiés avec une fidélité totale, sauf si l’option de réparation a été spécifiée. Si l’option de réparation a été spécifiée, certaines données de la base de données source n’ont peut-être pas été copiées.

En cas d’échec, la base de données de destination peut exister, mais n’est pas une copie complète de la base de données source.

Notes

Le compactage d’une base de données est également utilisé pour mettre à niveau une base de données d’un format de version antérieure vers une version plus moderne. Un paramètre facultatif est pconvert, qui contient une structure pouvant contenir une description d’une DLL de version antérieure à utiliser pour lire le format de base de données source. Cette fonctionnalité a été abandonnée dans Windows Server 2003. Après Windows Server 2003, les nouvelles versions d’ESE sont toujours en mesure de lire les anciennes versions du format de base de données. Cette fonctionnalité n’est donc pas nécessaire.

La densité souhaitée des données après une opération de compactage est spécifiée lors de la création de tables et d’index. La densité doit être comprise entre 20 % et 100 %. Si une base de données est principalement lue et non mise à jour, les applications définissent la densité sur 100 % pour réduire le nombre d’opérations d’E/S pendant le traitement des requêtes. Toutefois, si les données sont fréquemment mises à jour avec des opérations qui augmentent la taille des données stockées avec l’enregistrement, ou si de nouvelles données sont fréquemment insérées, l’application choisit une densité plus faible afin que les mises à jour trouvent plus souvent les ressources nécessaires disponibles. L’opération de compactage de la base de données entraîne une disposition idéale de la base de données en fonction du remplissage choisi par l’application.

Le compactage de base de données est une opération hors ligne. Il ne peut pas être effectué pendant que la base de données est en cours d’utilisation. Par conséquent, elle s’effectue généralement dans le cadre d’un processus de génération de développement d’une application qui fournit un jeu de données en tant que partie intégrante.

Le compactage de base de données hors connexion touche chaque bit de données d’une base de données et peut être utilisé comme un moyen de vérifier la cohérence d’une base de données. Si une base de données est suspecte, elle peut être compactée. Si aucune erreur n’est trouvée lors du compactage, il est alors connu que la base de données est dans un état valide pour ESE.

Spécifications

Condition requise Valeur

Client

Nécessite Windows Vista, Windows XP ou Windows 2000 Professionnel.

Serveur

Nécessite Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.

En-tête

Déclaré dans Esent.h.

Bibliothèque

Utilisez ESENT.lib.

DLL

Nécessite ESENT.dll.

Unicode

Implémenté en tant que JetCompactW (Unicode) et JetCompactA (ANSI).

Voir aussi

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService