Überprüfung des Zeichenfolgenpools
Windows Installer speichert alle Datenbankzeichenfolgen in einem einzelnen gemeinsamen genutzten Zeichenfolgenpool, um die Größe der Datenbank zu reduzieren und die Leistung zu verbessern. Die einzige Möglichkeit zum Überprüfen des Zeichenfolgenpools ist die Verwendung des MsiInfo-Tools im Windows Installer SDK.
Die Überprüfung des Zeichenfolgenpools besteht aus zwei wesentlichen Überprüfungen:
DBCS-Zeichenfolgentests
Die DBCS-Zeichenfolge überprüft jede Zeichenfolge in der Datenbank auf zwei Kriterien: Bei Paketen mit einer neutral markierten Codepage, wenn ein Zeichen ein erweitertes Zeichen (größer als 127) ist, wird die Zeichenfolge gekennzeichnet, und es wird eine Meldung angezeigt, dass die Codepage der Datenbank ungültig ist, da für diese Zeichen eine bestimmte Codepage erforderlich ist, die auf allen Systemen konsistent gerendert werden muss.
Wenn die Datenbank über eine Codepage verfügt, wird jede Zeichenfolge auf einen ungültigen DBCS-Indikator überprüft. Wenn eine nicht neutrale Zeichenfolge falsch markiert wurde, werden die Zeichen nicht ordnungsgemäß gerendert. (Dies wird am häufigsten dadurch verursacht, dass die Codepage mithilfe der Tabelle _ForceCodepage mit nicht neutralen Zeichenfolgen, die bereits in der Datenbank enthalten sind, auf einen bestimmten Wert erzwungen wird.) Beachten Sie, dass diese Überprüfung erfordert, dass die Codepage der Datenbank auf dem System installiert ist.
Wenn ein Codepageproblem vorliegt, kann der Benutzer den Fehler beheben, indem er die Tabelle _ForceCodepage verwendet, um die Codepage der Datenbank auf den entsprechenden Wert zu erzwingen. Weitere Informationen hierzu finden Sie unter Handhabung der Code Page.
Überprüfung der Referenzanzahl
Um die Verweisanzahl aller Zeichenfolgen zu überprüfen, wird jede Tabelle auf Zeichenfolgenwerte überprüft, die Anzahl der einzelnen Zeichenfolgen beibehalten, und das Ergebnis wird mit der gespeicherten Verweisanzahl im Zeichenfolgenpool der Datenbank verglichen.
Wenn ein Problem mit der Anzahl der Zeichenfolgenverweise vorliegt, sollte der Benutzer sofort jede Tabelle der Datenbank mithilfe von MsiDatabaseExport exportieren, eine neue Datenbank erstellen und die Tabellen mithilfe von MsiDatabaseImport in die neue Datenbank importieren. Die neue Datenbank hat dann den gleichen Inhalt wie die alte Datenbank, aber die Anzahl der Zeichenfolgenverweise ist korrekt. Das Hinzufügen oder Löschen von Daten aus einer Datenbank mit einem beschädigten Zeichenfolgenpool kann die Beschädigung der Datenbank und den Datenverlust erhöhen. Diese Schritte sind daher wichtig, um weitere Datenverluste zu vermeiden.
Denken Sie beim Neuerstellen von Datenbanken daran, alle erforderlichen Speicher und Datenströme in die neue Datenbank einzubetten (siehe _Streams Table und _Storages Table), und beachten Sie Codepageprobleme. Denken Sie auch daran, jede der erforderlichen Eigenschaften des Übersichtsinformationsdatenstroms festzulegen.