ID do artigo: 967963 - Última revisão: sexta-feira, 24 de julho de 2009 - Revisão: 2.0

CORRECÇÃO: Algumas linhas são excluídas quando você reparar um banco de dados usando o método de reparo juntamente com a opção RepairOption.RecoverCorruptedRows no SQL Server 2005 Compact Edition e no SQL Server Compact 3.5

Download do hotfix está disponívelDownload do Hotfix Disponível
Visualizar e solicitar downloads de hotfix
Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

No Microsoft SQL Server 2005 Compact Edition ou no Microsoft SQL Server Compact 3.5, quando você reparar um banco de dados usando o método Reparar juntamente com a opção RepairOption.RecoverCorruptedRows , algumas linhas são inesperadamente excluídas.

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibido, envie uma solicitação para suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Não há nenhum pré-requisito para instalar esse hotfix.

Requisitos de reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações sobre a substituição do hotfix

Esse hotfix não substitui um hotfix lançado anteriormente.

Informações sobre o arquivo

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
SQL Server Compact 3.5 para Windows CE 5.0 em dispositivos com base no Armv4i diferente de dispositivos do pocket PC
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlce.dev.ENU.wce5.armv4i.cabNão aplicável316,63306-Mar-200903: 49Não aplicável
Sqlce.REPL.wce5.armv4i.cabNão aplicável818,22506-Mar-200903: 49Não aplicável
Sqlce.wce5.armv4i.cabNão aplicável1,775,09006-Mar-200903: 49Não aplicável
SQL Server Compact 3.5 para Windows CE 5.0 em com base em Armv4i pocket PC dispositivos
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlce.dev.ENU.PPC.wce5.armv4i.cabNão aplicável104,68406-Mar-200904: 02Não aplicável
Sqlce.PPC.wce5.armv4i.cabNão aplicável749,79406-Mar-200904: 02Não aplicável
Sqlce.REPL.PPC.wce5.armv4i.cabNão aplicável341,74306-Mar-200904: 02Não aplicável
SQL Server 2005 Compact Edition para Windows CE 4.0 em dispositivos com base no Armv4 diferente de dispositivos do pocket PC
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlce30.dev.ENU.wce4.armv4i.cabNão aplicável327,40226-Janeiro de 200906: 02Não aplicável
Sqlce30.REPL.wce4.armv4i.cabNão aplicável760,89026-Janeiro de 200906: 02Não aplicável
Sqlce30.wce4.armv4i.cabNão aplicável1,627,83026-Janeiro de 200906: 02Não aplicável
SQL Server 2005 Compact Edition para Windows CE 4.0 em com base em Armv4 pocket PC dispositivos
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlce30.dev.ENU.PPC.wce4.ARMV4.cabNão aplicável324,33026-Janeiro de 200906: 00Não aplicável
Sqlce30.PPC.wce4.ARMV4.cabNão aplicável1,585,83826-Janeiro de 200906: 00Não aplicável
Sqlce30.REPL.PPC.wce4.ARMV4.cabNão aplicável739,37826-Janeiro de 200906: 00Não aplicável

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Como instalar esse hotfix

Para instalar esse hotfix, execute estas etapas:
  1. Baixe o hotfix para o seu sistema.
  2. No dispositivo, desinstale a versão existente do SQL Server 2005 Compact Edition ou do SQL Server Compact 3.5.
  3. Extraia os arquivos .cab do pacote de hotfix.
  4. No dispositivo, instale os arquivos .cab três.

Obter mais informações para desenvolvedores

Você deve seguir essas etapas para substituir as DLLs que usa seu projeto com as DLLs do pacote de hotfix:
  1. Extrair o SYSTEM ~ 1.004 arquivo do arquivo .cab para o seu sistema.

    A tabela a seguir lista o arquivo .cab do qual você pode extrair o SYSTEM ~ 1.004 arquivo.
    Recolher esta tabelaExpandir esta tabela
    PlataformaNome do hotfixarquivo .cab
    SQL Server Compact 3.5 para Windows CE 5.0 em dispositivos com base no Armv4i diferente de dispositivos do pocket PCSQL_CE_35SP1_wce5_ARMV4i_3_5_5692_5Sqlce.wce5.armv4i.cab
    SQL Server Compact 3.5 Windows CE 5.0 em com base em Armv4i pocket PC dispositivosSQL_CE_35SP1_wce5_PPC_ARMV4i_3_5_5692_5Sqlce.PPC.wce5.armv4i.cab
    SQL Server 2005 Compact Edition para Windows CE 4.0 em com base em Armv4 pocket PC dispositivosSQL_CE_31_WCE400_PPC_5300_9Sqlce30.PPC.wce4.ARMV4.cab
    SQL Server 2005 Compact Edition para Windows CE 4.0 em dispositivos com base no Armv4 diferente de dispositivos do pocket PCSQL_CE_31_WCE400_5300_9Sqlce30.wce4.armv4i.cab
  2. Renomear o SYSTEM ~ 1.004 arquivo como arquivo System.Data.SqlServerCe.dll.
  3. Substitua o arquivo System.Data.SqlServerCe.dll que é instalado em seu sistema com o novo arquivo System.Data.SqlServerCe.dll que você obteve na etapa 2.

    Se você estiver usando o SQL Server 2005 Compact Edition, substitua o arquivo no seguinte local com o arquivo que você obteve na etapa 2:
    %ProgramFiles%\Microsoft visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\System.Data.SqlServerCe.dll
    Se você estiver usando o SQL Server Compact 3.5, substitua o arquivo no seguinte local com o arquivo que você obteve na etapa 2:
    %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Devices\System.Data.SqlServerCe.dll
  4. Se seu projeto usa Especifica o arquivo System.Data.SqlServerCe.dll que não está no local em que etapa 3, substituir o arquivo System.Data.SqlServerCe.dll nesse local.

Alterações incluídas nesse hotfix

Depois de aplicar esse hotfix, a enumeração RepairOption é aprimorada da seguinte maneira. Examine cuidadosamente.
  • RecoverAllOrFail Essa é uma nova opção introduzida nesse hotfix. Se o método de reparo é invocado usando o valor RecoverAllorFail , a recuperação será bem-sucedida somente se houver sem perda de dados. Se a perda de dados for detectada, a recuperação for anulada e uma exceção é lançada. Essa é a opção preferencial para garantir que o reparo de banco de dados foi concluído com êxito e que não há nenhuma perda de dados. Ele é a opção mais eficiente para ajudar a proteger contra corrupção do banco de dados reparado e perda de dados.
  • RecoverAllPossibleRows Essa é uma nova opção introduzida nesse hotfix. Se o método de reparo é invocado usando o valor RecoverAllPossibleRows , o banco de dados irá tentar ler dados de páginas corrompidas. Potencialmente, isso resulta em mais dados sendo recuperados. No entanto, essa opção não garante que os dados recuperados será livres de qualquer tipo de dano. Portanto, mesmo que a próxima Verificar ligar a banco de dados reparado retorna um valor true , o banco de dados pode conter corrupção lógica. Por exemplo, um valor de chave externo pode ser presente sem o valor da chave primária correspondente. Se isso ocorreu, a definição de restrição externa de esquema no banco de dados de destino deve falhar e ser ausente. Recuperação é executada dessa maneira para melhorar o desempenho.
  • DeleteCorruptedRows Se o método de reparo é invocado usando o valor DeleteCorruptedRows , todas as páginas corrompidas serão descartadas do banco de dados. Isso pode resultar em perda de dados significativos. Com essa opção, mesmo se o próximo Verificar ligar à banco de dados reparado retorna um valor true , o banco de dados pode conter corrupção lógica. Por exemplo, um valor de chave externo pode ser presente sem o valor da chave primária correspondente. Se isso ocorreu, a definição de restrição externa de esquema no banco de dados de destino deve falhar e ser ausente. Recuperação é executada dessa maneira para melhorar o desempenho.
  • RecoverCorruptedRows Essa opção não é considerada eficiente e não deve ser usada. Use RecoverAllPossibleRows.
anotações
  • O método de reparo não garante a recuperação de dados completo para cada banco de dados suspeito. Algumas formas de corrupções de dados não podem ser reparadas completamente, independentemente da opção Reparar selecionada pelo aplicativo.
  • Independentemente da opção de reparo que está selecionada, o método de reparo pode gravar detalhes sobre qualquer inconsistência de banco de dados em um arquivo de log. Este arquivo é gravado para o mesmo diretório que contém o arquivo .sdf de banco de dados de origem. O aplicativo ou um administrador de banco de dados deve examinar esse arquivo de log para determinar se o banco de dados resultante é válido. Essa é uma etapa importante quando o aplicativo não usar a opção RecoverAllOrFail.
  • Quando o aplicativo não usa a opção RecoverAllOrFail, é a responsabilidade do aplicativo ou de administrador de banco de dados para validar o banco de dados resultante. Isso é feito examinando o arquivo de log para determinar se o banco de dados é confiável.
  • Se o aplicativo ou o usuário não pode validar o banco de dados resultante, restaure o banco de dados de um backup ou re-construct manualmente o banco de dados. Você deve fazer isso antes de usar o banco de dados de produção.

Referências

Para obter mais informações sobre o modelo de Incremetal serviços, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
935897  (http://support.microsoft.com/kb/935897/ ) Há um modelo incremental de serviços da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter mais informações sobre o esquema para nomeação para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499  (http://support.microsoft.com/kb/822499/ ) Novo esquema para nomeação para pacotes de atualização de software do Microsoft SQL Server
Para obter mais informações sobre terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684  (http://support.microsoft.com/kb/824684/ ) Descrição da terminologia padrão que é usada para descrever as atualizações de software

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server Compact 3.5
  • Microsoft SQL Server 2005 Compact Edition
Palavras-chave: 
kbmt kbsurveynew kbhotfixserver kbautohotfix kbexpertiseadvanced kbqfe kbfix KB967963 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 967963  (http://support.microsoft.com/kb/967963/en-us/ )