überprüfung String-Pool
Windows Installer speichert alle Datenbankzeichenfolgen in einem einzigen freigegebenen Zeichenfolgenpool, um die Größe der Datenbank zu verringern und die Leistung zu verbessern. Die einzige Möglichkeit zum Überprüfen des Zeichenfolgenpools besteht darin, das MsiInfo-Tool im Windows Installer SDK zu verwenden.
Die Überprüfung des Zeichenfolgenpools besteht aus zwei Hauptüberprüfungen:
DBCS-Zeichenfolgentests
Die DBCS-Zeichenfolge überprüft jede Zeichenfolge in der Datenbank auf zwei Kriterien: Bei Paketen mit einer neutralen Codeseite, die gekennzeichnet ist, wenn ein Beliebiges Zeichen ein erweitertes Zeichen (größer als 127) ist, wird die Zeichenfolge gekennzeichnet und eine Meldung angezeigt, die besagt, dass die Codepage der Datenbank ungültig ist, da für diese Zeichen eine bestimmte Codeseite erforderlich ist, die konsistent auf allen Systemen gerendert werden muss.
Wenn die Datenbank über eine Codeseite verfügt, wird jede Zeichenfolge nach einem ungültigen DBCS-Indikator gescannt. Wenn eine nicht neutrale Zeichenfolge nicht ordnungsgemäß markiert wurde, werden die Zeichen nicht ordnungsgemäß gerendert. (Dies wird am häufigsten durch Erzwingen der Codeseite zu einem bestimmten Wert mithilfe der _ForceCodepage Tabelle mit nicht neutralen Zeichenfolgen verursacht, die bereits in der Datenbank vorhanden sind.) Beachten Sie, dass für diese Überprüfung die Codepage der Datenbank auf dem System installiert werden muss.
Wenn ein Codeseitenproblem auftritt, kann der Benutzer den Fehler beheben, indem er die _ForceCodepage Tabelle verwendet, um die Codepage der Datenbank auf den entsprechenden Wert zu erzwingen. Weitere Informationen finden Sie unter Code Page Handling.
Überprüfung der Referenzanzahl
Um die Referenzanzahl aller Zeichenfolgen zu überprüfen, wird jede Tabelle nach Zeichenfolgenwerten gescannt, die Anzahl jeder einzelnen Zeichenfolge beibehalten, und das Ergebnis wird mit der gespeicherten Verweisanzahl im Datenbankzeichenfolgenpool verglichen.
Wenn ein Problem mit der Zeichenfolgenreferenzanzahl vorliegt, sollte der Benutzer sofort jede Tabelle der Datenbank mithilfe MsiDatabaseExport-exportieren, eine neue Datenbank erstellen und die Tabellen mithilfe von MsiDatabaseImportin die neue Datenbank importieren. Die neue Datenbank hat dann den gleichen Inhalt wie die alte Datenbank, die Zeichenfolgenverweisanzahl ist jedoch korrekt. Das Hinzufügen oder Löschen von Daten aus einer Datenbank mit einem beschädigten Zeichenfolgenpool kann die Beschädigung der Datenbank und des Verlusts von Daten erhöhen. Daher ist es wichtig, diese Schritte schnell auszuführen, um weitere Datenverluste zu verhindern.
Denken Sie beim Neuerstellen von Datenbanken daran, alle erforderlichen Speicher und Datenströme in die neue Datenbank einzubetten (siehe _Streams Tabelle und _Storages Tabelle), und beachten Sie Codeseitenprobleme. Denken Sie auch daran, jeden der erforderlichen Zusammenfassungsinformationsstream Eigenschaften festzulegen.