KB4039776-correção: comportamento incorreto ao usar tabelas com otimização de memória com a instrução "onde existe" no SQL Server 2016 ou 2017

Sintomas

Suponha que você esteja usando o Microsoft SQL Server 2016 ou o 2017. Ao processar transações de dados otimizadas para memória usando variáveis de tabela otimizadas à memória com a instrução Where Exists , você pode receber um resultado errado.

Por exemplo:

Step1: Crie um banco de dados e tabela com otimização de memória.

Criar demonstração de banco de dados

Instrução ALTER DATABASE ADD FILE demo_mod contém MEMORY_OPTIMIZED_DATA 

ALTERAR demonstração do banco de dados Adicionar arquivo (Name = ' demo_mod1 ', FileName = ' C:\DATA\ demo_mod1 ') ao grupo de arquivos demo_mod 

Usar demonstração

Usado

Crie o tipo dbo. IN_MEMORY_TABLE_TYPE COMO TABELA

(source_col INT nulo,

target_col INT não nula

ÍNDICE ix_InMemoryTable não CLUSTERIZAdo (target_col)

) COM (MEMORY_OPTIMIZED = ON)

GO 

Step2: inserir dados e atualizar dados.

DECLARE @t dbo. IN_MEMORY_TABLE_TYPE

INSERIR valores de @t (source_col, target_col) (10; 0), (0, 0)

select * from @t

Atualize o conjunto de R1 target_col =-1 de @t R1

ONDE existe (selecione * de @t R2 r2.source_col > 0)

SELECT * FROM @t

GO 

Step3: verificar resultados.

Resultados reais: nem todas as linhas da variável de tabela @t são atualizadas.

source_col | target_col

----------------------

10 | -1

0 | 0

Os resultados esperados: todas as linhas devem ser atualizadas para ter target_col =-1.

source_col | target_col

----------------------

10 | -1

0 | um.

Resolução

Esse problema foi corrigido nas seguintes atualizações cumulativas do SQL Server:

      Atualização cumulativa 1 para SQL Server 2017 

      Atualização cumulativa 5 para SQL Server 2016 SP1

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 do SQL Server:

Atualização cumulativa mais recente do SQL Server 2017

Atualizações cumulativas mais recentes do SQL Server 2016

Status

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

Referências

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

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×