Sdílet prostřednictvím


Ověřování String-Pool

Instalační služba systému Windows ukládá všechny databázové řetězce do jednoho sdíleného fondu řetězců, aby snížila velikost databáze a zlepšila výkon. Jediným způsobem ověřování fondu řetězců je použití nástroje MsiInfo nalezeného v sadě Windows Installer SDK.

Ověření fondu řetězců se skládá ze dvou hlavních kontrol:

Testy řetězců služby DBCS

Řetězcové testy DBCS prohledávají každý řetězec v databázi pro dvě kritéria: Pro balíčky s označenou neutrální znakovou stránkou, pokud některý znak je rozšířený znak (větší než 127), řetězec je označen příznakem a zobrazí se zpráva s oznámením, že znaková stránka databáze je neplatná, protože tyto znaky vyžadují, aby se určitá znaková stránka vykreslovala konzistentně ve všech systémech.

Pokud databáze obsahuje znakovou stránku, vyhledá se každý řetězec s neplatným indikátorem služby DBCS. Pokud je nestranný řetězec nesprávně označený, znaky se nevykreslí správně. (Nejčastěji je to způsobeno vynucením znakové stránky na konkrétní hodnotu pomocí tabulky _ForceCodepage s nestrannými řetězci, které jsou již v databázi.) Upozorňujeme, že tato kontrola vyžaduje, aby byla v systému nainstalována znaková stránka databáze.

Pokud dojde k problému se znakovou stránkou, může uživatel chybu opravit pomocí tabulky _ForceCodepage k vynucení znakové stránky databáze na odpovídající hodnotu. Další informace naleznete v tématu zpracování znakové stránky.

Ověření počtu odkazů

Pokud chcete ověřit počty odkazů všech řetězců, každá tabulka vyhledá řetězcové hodnoty, zachová se počet jednotlivých jedinečných řetězců a výsledek se porovná s uloženým počtem odkazů ve fondu řetězců databáze.

Pokud dojde k problému s počtem odkazů na řetězce, měl by uživatel okamžitě exportovat každou tabulku databáze pomocí MsiDatabaseExport, vytvořit novou databázi a importovat tabulky do nové databáze pomocí MsiDatabaseImport. Nová databáze pak má stejný obsah jako stará databáze, ale počty odkazů na řetězce jsou správné. Přidání nebo odstranění dat z databáze s poškozeným fondem řetězců může zvýšit poškození databáze a ztráty dat, takže tyto kroky jsou důležité rychle, aby se zabránilo další ztrátě dat.

Při opětovném sestavení databází nezapomeňte do nové databáze vložit všechna potřebná úložiště a datové proudy (viz _Streams Table a _Storages Table) a mějte na paměti problémy se znakovou stránkou. Nezapomeňte také nastavit každou z nezbytných vlastností souhrnného informačního streamu.