Partilhar via


Validação String-Pool

O Windows Installer armazena todas as cadeias de caracteres de banco de dados em um único pool de cadeias de caracteres compartilhadas para reduzir o tamanho do banco de dados e melhorar o desempenho. O único meio de validar o pool de cadeias de caracteres é usar a ferramenta MsiInfo encontrada no SDK do Windows Installer.

A verificação do pool de cadeias de caracteres consiste em duas verificações principais:

Testes de cadeia de caracteres DBCS

Os testes de cadeia de caracteres DBCS examinam cada cadeia de caracteres no banco de dados em busca de dois critérios: Para pacotes com uma página de código neutra marcada, se qualquer caractere for um caractere estendido (maior que 127), a cadeia de caracteres será sinalizada e uma mensagem será exibida informando que a página de código do banco de dados é inválida porque esses caracteres exigem que uma página de código específica seja processada consistentemente em todos os sistemas.

Se o banco de dados tiver uma página de código, cada cadeia de caracteres será verificada em busca de um indicador DBCS inválido. Se uma cadeia de caracteres não neutra tiver sido marcada incorretamente, os caracteres não serão renderizados corretamente. (Isso é mais comumente causado por forçar a página de código a um valor específico usando a tabela _ForceCodepage com cadeias de caracteres não neutras já no banco de dados.) Observe que essa verificação requer que a página de código do banco de dados seja instalada no sistema.

Se houver um problema de página de código, o usuário pode corrigir o erro usando a tabela _ForceCodepage para forçar a página de código do banco de dados para o valor apropriado. Para obter mais informações, consulte Code Page Handling.

Verificação da contagem de referência

Para verificar as contagens de referência de todas as cadeias de caracteres, cada tabela é verificada em busca de valores de cadeia de caracteres, uma contagem de cada cadeia de caracteres distinta é mantida e o resultado é comparado com a contagem de referência armazenada no pool de cadeias de caracteres do banco de dados.

Se houver um problema de contagem de referência de cadeia de caracteres, o usuário deve exportar imediatamente cada tabela do banco de dados usando MsiDatabaseExport , criar um novo banco de dados e importar as tabelas para o novo banco de dados usando MsiDatabaseImport. O novo banco de dados tem o mesmo conteúdo do banco de dados antigo, mas as contagens de referência de cadeia de caracteres estão corretas. Adicionar ou excluir dados de um banco de dados com um pool de cadeias de caracteres corrompido pode aumentar a corrupção do banco de dados e a perda de dados, portanto, tomar essas medidas rapidamente é importante para evitar mais perda de dados.

Ao reconstruir bancos de dados, lembre-se de incorporar todos os armazenamentos e fluxos necessários no novo banco de dados (consulte _Streams Tabela e _Storages Tabela) e esteja ciente dos problemas da página de código. Lembre-se também de definir cada uma das propriedades necessárias do Summary Information Stream.