次の方法で共有


String-Pool 検証

Windows インストーラーは、データベースのサイズを小さくし、パフォーマンスを向上させるために、すべてのデータベース文字列を単一の共有文字列プールに格納します。 文字列プールを検証する唯一の方法は、Windows インストーラー SDK にある MsiInfo ツールを使用することです。

文字列プールの検証は、次の 2 つの主要なチェックで構成されます。

DBCS 文字列テスト

DBCS 文字列テストでは、データベース内の各文字列が 2 つの基準でスキャンされます。ニュートラル コード ページがマークされているパッケージの場合、いずれかの文字が拡張文字 (127 より大きい) の場合は、文字列がフラグ付きになり、これらの文字をすべてのシステムで一貫して表示するためには特定のコード ページが必要であるため、このデータベースのコード ページが無効であることを示すメッセージが表示されます。

データベースにコード ページがある場合、各文字列に無効な DBCS インジケーターが含まれているかスキャンします。 ニュートラルでない文字列が不適切にマークされている場合、文字は正しくレンダリングされません。 (これは通常、データベースにニュートラルでない文字列が既に含まれる _ForceCodepage テーブルを使用して、コード ページを特定の値に強制すると発生します。) このチェックでは、データベースのコード ページがシステムにインストールされている必要があることに注意してください。

コード ページの問題が発生した場合、ユーザーは _ForceCodepage テーブルを使用して、データベースのコード ページを適切な値に強制することでエラーを修正できます。 詳細については、「コード ページの処理」を参照してください。

参照カウントの検証

すべての文字列の参照カウントを確認するために、すべてのテーブルで文字列値がスキャンされ、各個別の文字列の数が保持され、結果がデータベース文字列プールに格納されている参照カウントと比較されます。

文字列の参照カウントの問題が発生した場合、ユーザーはすぐに MsiDatabaseExport を使用してデータベースの各テーブルをエクスポートし、新しいデータベースを作成し、MsiDatabaseImport を使用して新しいデータベースにテーブルをインポートする必要があります。 すると、新しいデータベースは古いデータベースと同じ内容になりますが、文字列の参照カウントは正しくなります。 文字列プールが破損したデータベースからデータを追加または削除すると、データベースの破損やデータの損失が増加する可能性があるため、さらなるデータ損失を防ぐには、これらの手順を迅速に実行することが重要です。

データベースを再構築するときは、必要なストレージとストリームを新しいデータベースに埋め込み (_Streams テーブル_Storages テーブルを参照してください)、コード ページの問題に注意することを忘れないでください。 また、必要な概要情報ストリームの各プロパティを設定することを忘れないでください。