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