Sintomas
Suponha que você esteja usando o Microsoft SQL Server 2016 ou 2017. Quando você processa transações de dados com otimização de memória usando variáveis de tabela otimizadas para memória com a instrução where exists , você pode obter um resultado errado.
Por exemplo:
Passo 1: Crie uma base de dados e uma tabela com memória otimizada.
Demonstração da criação de BASE DE DADOS
DEMONSTRAÇÃO DA BASE DE DADOS ALTER ADICIONAR GRUPO DE FICHEIROS demo_mod CONTÉM MEMORY_OPTIMIZED_DATA
Demonstração do ALTER DATABASE ADD FILE (name='demo_mod1', filename='C:\DATA\demo_mod1') AO FILEGROUP demo_mod
Utilizar a Demonstração
Ir
CRIE O TIPO DBO. IN_MEMORY_TABLE_TYPE COMO TABELA
( source_col INT NULL,
target_col INT not NULL
ÍNDICE ix_InMemoryTable NÃO AGRUPADO (target_col)
) COM (MEMORY_OPTIMIZED = ATIVADO)
GO
Passo 2: inserir e atualizar dados.
DECLARE @t dbo. IN_MEMORY_TABLE_TYPE
INSERIR @t ( source_col, target_col ) VALORES (10, 0),(0, 0)
*selecione * de @t*
UPDATE R1 SET target_col = -1 FROM @t R1
ONDE EXISTE ( SELECIONE * DE @t r2 ONDE r2.source_col > 0 )
*SELECIONE * FROM @t*
GO
Passo 3: Verifique os resultados.
Resultados Reais: Nem todas as linhas de variáveis de tabela @t ser atualizadas.
source_col | target_col
10 | -1
0 | 0
Os resultados esperados: Todas as linhas devem ser atualizadas para terem target_col = -1.
source_col | target_col
10 | -1
0 | -1.
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização cumulativa 1 para SQL Server 2017
Atualização cumulativa 5 para SQL Server 2016 SP1
Acerca das atualizações cumulativas para SQL Server:
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente para o SQL Server 2017
Atualizações cumulativas mais recentes do SQL Server 2016
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.