Validation String-Pool
Windows Installer stocke toutes les chaînes de base de données dans un pool de chaînes partagé unique pour réduire la taille de la base de données et améliorer les performances. Le seul moyen de valider le pool de chaînes consiste à utiliser l’outil MsiInfo qui se trouve dans le Kit de développement logiciel (SDK) Windows Installer.
La vérification du pool de chaînes se compose de deux vérifications principales :
Tests de chaîne DBCS
Les tests de chaîne DBCS analysent chaque chaîne de la base de données à la recherche de deux critères : pour les packages avec une page de codes neutre marquée, si un caractère est un caractère étendu (supérieur à 127), la chaîne est marquée et un message s’affiche indiquant que la page de codes de la base de données n’est pas valide, car ces caractères nécessitent un rendu cohérent d’une page de codes spécifique sur tous les systèmes.
Si la base de données a une page de codes, chaque chaîne est analysée pour rechercher un indicateur DBCS non valide. Si une chaîne non neutre a été incorrectement marquée, les caractères ne s’affichent pas correctement. (Cela est généralement dû au fait de forcer la page de codes à une valeur particulière à l’aide de la table _ForceCodepage avec des chaînes non neutres déjà présentes dans la base de données.) Notez que cette case activée nécessite que la page de codes de la base de données soit installée sur le système.
En cas de problème de page de codes, l’utilisateur peut corriger l’erreur en utilisant la table _ForceCodepage pour forcer la page de codes de la base de données à la valeur appropriée. Pour plus d’informations, consultez Gestion de la page de code.
Vérification du nombre de références
Pour vérifier le nombre de références de toutes les chaînes, chaque table est analysée à la recherche de valeurs de chaîne, un nombre de chaque chaîne distincte est conservé et le résultat est comparé au nombre de références stockées dans le pool de chaînes de base de données.
En cas de problème de nombre de références de chaînes, l’utilisateur doit immédiatement exporter chaque table de la base de données à l’aide de MsiDatabaseExport, créer une base de données et importer les tables dans la nouvelle base de données à l’aide de MsiDatabaseImport. La nouvelle base de données a ensuite le même contenu que l’ancienne base de données, mais les nombres de références de chaînes sont corrects. L’ajout ou la suppression de données d’une base de données avec un pool de chaînes endommagé peut augmenter la corruption de la base de données et la perte de données. Il est donc important d’effectuer ces étapes rapidement pour éviter toute perte de données supplémentaire.
Lors de la reconstruction des bases de données, n’oubliez pas d’incorporer tous les stockages et flux nécessaires dans la nouvelle base de données (consultez _Streams Table et _Storages Table) et tenez compte des problèmes de page de code. N’oubliez pas également de définir chacune des propriétés du Flux d’informations récapitulatives nécessaires.