Delen via


validatie van String-Pool

In Windows Installer worden alle databasereeksen opgeslagen in één gedeelde tekenreeksgroep om de grootte van de database te verminderen en de prestaties te verbeteren. Het enige middel voor het valideren van de tekenreeksgroep is het gebruik van het MsiInfo-hulpprogramma dat is gevonden in de Windows Installer SDK.

Verificatie van tekenreeksgroepen bestaat uit twee hoofdcontroles:

DBCS-tekenreekstests

De DBCS-tekenreekstests scannen elke tekenreeks in de database op twee criteria: Voor pakketten met een neutrale codepagina gemarkeerd, als een teken een uitgebreid teken is (groter dan 127), wordt de tekenreeks gemarkeerd en wordt er een bericht weergegeven met de mededeling dat de codepagina van de database ongeldig is, omdat deze tekens vereisen dat een specifieke codepagina consistent op alle systemen wordt weergegeven.

Als de database een codepagina heeft, wordt elke tekenreeks gescand op een ongeldige DBCS-indicator. Als een niet-neutrale tekenreeks onjuist is gemarkeerd, worden de tekens niet correct weergegeven. (Dit wordt meestal veroorzaakt door het afdwingen van de codepagina naar een bepaalde waarde met behulp van de _ForceCodepage tabel met niet-neutrale tekenreeksen die al in de database aanwezig zijn.) Houd er rekening mee dat deze controle vereist dat de codepagina van de database op het systeem wordt geïnstalleerd.

Als er een codepaginaprobleem is, kan de gebruiker de fout oplossen met behulp van de _ForceCodepage tabel om de codepagina van de database naar de juiste waarde te dwingen. Zie Code Page Handlingvoor meer informatie.

Verificatie van referentieaantal

Als u het aantal verwijzingen van alle tekenreeksen wilt controleren, wordt elke tabel gescand op tekenreekswaarden, wordt een telling van elke afzonderlijke tekenreeks bewaard en wordt het resultaat vergeleken met het opgeslagen referentieaantal in de databasereeksgroep.

Als er een probleem is met het aantal tekenreeksen, moet de gebruiker elke tabel van de database onmiddellijk exporteren met behulp van MsiDatabaseExport, een nieuwe database maken en de tabellen importeren in de nieuwe database met behulp van MsiDatabaseImport. De nieuwe database heeft vervolgens dezelfde inhoud als de oude database, maar het aantal tekenreeksreferenties is juist. Het toevoegen of verwijderen van gegevens uit een database met een beschadigde tekenreeksgroep kan de beschadiging van de database en het verlies van gegevens vergroten, dus het snel uitvoeren van deze stappen is belangrijk om verdere gegevensverlies te voorkomen.

Wanneer u databases opnieuw bouwt, moet u alle benodigde opslag en streams in de nieuwe database insluiten (zie _Streams Table en _Storages Table) en moet u rekening houden met problemen met de codepagina. Vergeet ook niet om elk van de benodigde samenvattingsgegevensstroom in te stellen eigenschappen.