Поделиться через


проверка String-Pool

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

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

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

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

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

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

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

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

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

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