Проверка String-Pool

Установщик Windows хранит все строки базы данных в одном общем пуле строк, чтобы уменьшить размер базы данных и повысить производительность. Единственным способом проверки пула строк является использование средства MsiInfo в пакете SDK установщика Windows.

Проверка пула строк состоит из двух проверок main:

Строковые тесты DBCS

Строковые тесты DBCS проверяют каждую строку в базе данных на наличие двух условий: для пакетов с нейтральной кодовой страницей, если какой-либо символ является расширенным символом (больше 127), строка помечается и отображается сообщение о том, что кодовая страница базы данных является недопустимой, так как для этих символов требуется, чтобы определенная кодовая страница отображалась согласованно во всех системах.

Если в базе данных есть кодовая страница, каждая строка проверяется на наличие недопустимого индикатора DBCS. Если ненейтральная строка была помечена неправильно, символы будут отображаться неправильно. (Чаще всего это вызвано принудительной принудительной активацией кодовой страницы к определенному значению с помощью таблицы _ForceCodepage с не нейтральными строками, уже имеющимися в базе данных.) Обратите внимание, что для этого проверка требуется, чтобы в системе была установлена кодовая страница базы данных.

Если возникла проблема с кодовой страницей, пользователь может исправить ошибку, используя таблицу _ForceCodepage, чтобы принудить кодовую страницу базы данных к соответствующему значению. Дополнительные сведения см. в разделе Обработка кодовой страницы.

Проверка количества ссылок

Чтобы проверить количество ссылок всех строк, каждая таблица проверяется на наличие строковых значений, сохраняется количество каждой отдельной строки, а результат сравнивается с сохраненным количеством ссылок в пуле строк базы данных.

Если возникает проблема со счетчиком ссылок на строки, пользователь должен немедленно экспортировать каждую таблицу базы данных с помощью MsiDatabaseExport, создать новую базу данных и импортировать таблицы в новую базу данных с помощью MsiDatabaseImport. После этого новая база данных имеет то же содержимое, что и старая база данных, но количество ссылок на строки верное. Добавление или удаление данных из базы данных с поврежденным пулом строк может привести к повреждению базы данных и потере данных, поэтому для предотвращения дальнейшей потери данных важно выполнить эти действия быстро.

При перестроении баз данных не забудьте внедрить все необходимые хранилища и потоки в новую базу данных (см . раздел _Streams Table и _Storages Table) и помните о проблемах с кодовой страницей. Кроме того, не забудьте задать каждое из необходимых свойств потока сводной информации .