Validação do pool de cadeias de caracteres

O Windows Installer armazena todas as cadeias de caracteres do banco de dados em um único pool de cadeias de caracteres compartilhado 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 da cadeia de caracteres DBCS

Os testes da cadeia de caracteres DBCS verificam cada cadeia no banco de dados em busca de dois critérios: para os pacotes com uma página de código neutro marcada, se qualquer caractere for um caractere estendido (maior que 127), a cadeia de caracteres será sinalizada e uma mensagem será exibida dizendo 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 renderizada consistentemente em todos os sistemas.

Se o banco de dados tiver uma página de código, cada cadeia de caracteres será verificada quanto a um indicador DBCS inválido. Se uma cadeia de caracteres não neutra foi marcada incorretamente, os caracteres não serão renderizados corretamente. (Isso geralmente é causado por forçar a página de código a ter 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 na página de código, o usuário poderá corrigir o erro usando a tabela _ForceCodepage para forçar a página de código do banco de dados a ter o valor apropriado. Para obter mais informações, confira Tratamento da página de código.

Verificação da contagem de referência

Para verificar as contagens de referência de todas as cadeias de caracteres, cada tabela é verificada quanto aos valores da cadeia de caracteres, uma contagem de cada cadeia 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 na contagem de referência da cadeia de caracteres, o usuário deverá 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. Então, o novo banco de dados tem o mesmo conteúdo do banco de dados antigo, mas as contagens de referência da 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, executar essas etapas rapidamente é importante para evitar mais perda de dados.

Ao recompilar os bancos de dados, lembre-se de inserir quaisquer armazenamentos e fluxos necessários no novo banco de dados (confira a tabela _Streams e a tabela _Storages) e fique por dentro dos problemas da página de código. Lembre-se também de definir cada uma das propriedades necessárias do Fluxo de informações de resumo.