KB4055758 - CORREÇÃO: comportamento inconsistente para devolver espaços em branco à direita no final dos dados DE CARÁR e BINÁRIO no SQL Server

Aplica-se A
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Sintomas

Suponha que tem uma tabela do Microsoft SQL Server que tem um ou mais índices incorporados na mesma. Quando consulta na tabela, SQL Server pode efetuar preenchimento de dados inconsistente para colunas CHAR e BINARY. O comportamento inconsistente para devolver espaços em branco à direita no final das colunas de dados CHAR e BINARY depende das seguintes condições:

  • As definições do ANSI_PADDING quando as colunas são criadas na tabela SQL Server.
  • A decisão de efetuar a análise de tabelas ou o índice procura nas colunas.

Causa

Em determinados cenários, SQL Server podem realizar uma otimização que lhe permite ignorar muitas operações para uma entrega de dados mais rápida. O problema ocorre porque SQL Server não reconhece que a otimização não pode ser aplicada para o cenário acima.

Mais Informações

Este comportamento de SQL Server não está em conformidade com o comportamento documentado no seguinte artigo: Utilizar dados de Caráter e Varchar.

Nota

Se ANSI_PADDING estiver ATIVADO quando é criada uma coluna NULL de caráter, este comporta-se da mesma forma que uma coluna caráter NÃO NULO: os valores são acolchoados à direita para o tamanho da coluna. Se ANSI_PADDING estiver DESATIVADO quando é criada uma coluna NULL de caráter, comporta-se como uma coluna varchar com ANSI_PADDING definida como DESATIVADO: os espaços em branco à direita são truncados.

Resolução

Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:

Atualização Cumulativa 2 para SQL Server 2017

Atualização Cumulativa 9 para SQL Server 2016

Atualização Cumulativa 6 para SQL Server 2016 SP1

Atualização Cumulativa 8 para SQL Server 2014 SP2

Atualização Cumulativa 7 para SQL Server 2014 SP1

Acerca das atualizações cumulativas para SQL Server:

Cada nova atualização cumulativa para SQL Server contém todas as correções e todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:

Atualização cumulativa mais recente do SQL Server 2017

Atualização cumulativa mais recente do SQL Server 2016

Atualização cumulativa mais recente para SQL Server 2014

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a"

Referências

Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.