CORRECÇÃO: Os dados da coluna podem ser eliminados quando actualizar outra coluna de comprimento variável numa tabela de uma base de dados actualizado a partir do SQL Server 2005

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3120595
Sintomas
Quando actualiza um valor de uma coluna de comprimento variável numa tabela de base de dados que foi actualizado a partir do Microsoft SQL Server 2005, os dados de outra coluna de comprimento variável na mesma linha são eliminados.

Este problema ocorre no Microsoft SQL Server 2014 e 2012 do Microsoft SQL Server. O cenário seguinte poderá expor uma base de dados para este problema. Esta lista representa uma sequência de eventos:

  • É criada uma base de dados no SQL Server 2005.
  • No SQL Server 2005, alterar uma tabela e, em seguida, largar um ou mais colunas de comprimento variável no fim da definição da tabela.
  • Adicionar novas colunas de comprimento variável com um tipo de dados e comprimento das colunas ignorados semelhantes.
  • A base de dados é actualizado do SQL Server 2005 a 2014 do SQL Server ou SQL Server 2012.
  • Actualizar mais tarde o valor de outra coluna de comprimento variável, e os dados actualizados tem a sobrecarga a uma nova página.
Neste cenário, os dados num ou mais das colunas recentemente adicionadas na mesma linha podem ser eliminados.

Pode utilizar o script a Mais informações secção para verificar o seguinte:

  • Se todas as tabelas na base de dados específica eliminar colunas de comprimento variável
  • Desloca o se colunas adicionais de comprimento variável tenham sido criadas com a correspondência de processos
Nota Este problema não é detectado pelo DBCC CHECKDB.
Resolução
Nota Esta correcção apenas impede que as ocorrências futuras do problema.

Importante Se estiver a actualizar a base de dados do SQL Server 2005 a 2014 do SQL Server ou SQL Server 2012, certifique-se de que se refere a secção "Como contornar".

Este problema foi corrigido pela primeira vez na actualização cumulativa para o SQL Server:

Estes são as mais recentes actualizações cumulativas para estas versões do programa.

Recomendação: Instale a actualização cumulativa mais recente para o SQL Server 2014 ou SQL Server 2012

Instale cada actualização cumulativa nova para o SQL Server contém todas as correcções e todas as correcções de segurança que foram incluídas na anterior actualização cumulativa. Verifique as actualizações cumulativas mais recentes para o SQL Server:



Nota Para mais informações sobre as compilações do SQL Server mais recentes, consulte Onde encontrar informações sobre o SQL Server mais recente cria.
Como contornar
Importante Aplica esta solução alternativa quando actualiza a base de dados do SQL Server 2005 a 2014 do SQL Server ou SQL Server 2012 e antes de permitir que as instruções de actualização ser executada na base de dados actualizado.

Para contornar este problema se largar colunas numa tabela, certifique-se de que efectua um dos seguintes passos antes de actualizar ou eliminar linhas:

  • Reconstruir o índice clusterizado utilizando Alterar índice (...) RECONSTRUIR
  • Reconstruir a área para dados dinâmicos utilizando ALTER TABLE (...) RECONSTRUIR

Mais Informação
Pode utilizar o script seguinte para verificar se todas as tabelas na base de dados específica eliminou colunas potencialmente afectados por este problema.

Nota Se o script não devolver quaisquer linhas, isso significa que este problema não é actualmente aplicável a qualquer tabela no seu sistema.
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

Importante Este script deve ser utilizado apenas para o objectivo e âmbito de aplicação do presente artigo.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3120595 - Última Revisão: 05/31/2016 06:53:00 - Revisão: 11.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtpt
Comentários