KB4055758 - CORRECÇÃO: Comportamento inconsistente para retornar espaços em branco à direita no final dos dados CHAR e BINARY 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 você tenha uma tabela do Microsoft SQL Server com um ou mais índices criados nela. Quando você consulta na tabela, o SQL Server pode executar preenchimento de dados inconsistente para colunas CHAR e BINARY. O comportamento inconsistente para retornar espaços em branco à direita no final das colunas de dados CHAR e BINARY depende das seguintes condições:

  • As configurações do ANSI_PADDING quando as colunas são criadas na tabela SQL Server.
  • A decisão de executar a verificação de tabela ou a busca de índice nas colunas.

Causa

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

Mais informações

Esse comportamento do SQL Server não está em conformidade com o comportamento documentado no seguinte artigo: Usando dados Char e Varchar.

Observação

Se ANSI_PADDING estiver ATIVADO quando uma coluna char NULL for criada, ela se comportará da mesma forma que uma coluna char NOT NULL: os valores são preenchidos à direita para o tamanho da coluna. Se ANSI_PADDING estiver OFF quando uma coluna char NULL for criada, ela se comportará como uma coluna varchar com ANSI_PADDING definido como OFF: os espaços em branco à direita são truncados.

Resolução

Esse problema é corrigido nas seguintes atualizações cumulativas para o SQL Server:

Atualização cumulativa 2 para o SQL Server 2017

Atualização cumulativa 9 para o SQL Server 2016

Atualização cumulativa 38 para o SQL Server 2016 SP1 (Build 50785)

Atualização cumulativa 8 para o SQL Server 2014 SP2

Atualização cumulativa 7 para o SQL Server 2014 SP1

Sobre atualizações cumulativas para o SQL Server:

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o 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 do SQL Server 2014

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a"

Referências

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