KB3030619 - CORREÇÃO: dados incorretos retornados quando você consulta a coluna DATA no SQL Server 2014

Aplica-se a
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use)

Sintomas

Suponha que tem uma tabela que contém uma coluna de tipo de dados DATA e que implementou o Índice de Arquivo de Colunas Agrupadas (CCSI) nesta tabela no Microsoft SQL Server 2014. Quando tenta consultar a tabela ao utilizar o tipo de dados DATA como qualificador, poderão ser devolvidos dados incorretos.

Por exemplo:criar separador tabela2
(C1 int, c2 data, c3 varchar(10))

CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO

select *
FROM tab2 S -- Tabela com colunas agrupadasíndice
WHERE S.c2 = -- @date variável do tipo de dados Data

Resolução

Informações do service pack

Para resolve este problema, obtenha o Service Pack 1 para SQL Server 2014.

Para obter mais informações sobre o SQL Server 2014 Service Pack 1 (SP1), consulte Bugs corrigidos no SQL Server 2014 Service Pack 1 .

Informações de atualização cumulativa

Este problema foi corrigido na seguinte atualização cumulativa do SQL Server.

          

Recomendação: Instale a atualização cumulativa mais recente para o 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:

      

Mais informações

Use o seguinte código para reproduzir este problema:criar guia tabela1
(C1 int, c2 data)

Inserir no separador 1
Valores (1 , '2000-01-01')

CREATE NONCLUSTERED INDEX [idxtab1c2] ON tab1
(
       c2 ASC
)
COM (PAD_INDEX = DESATIVADO, STATISTICS_NORECOMPUTE = DESATIVADO, SORT_IN_TEMPDB = DESATIVADO, DROP_EXISTING = DESATIVADO, ONLINE = DESATIVADO, ALLOW_ROW_LOCKS = ATIVADO, ALLOW_PAGE_LOCKS = ATIVADO)

separador criar tabela2
(C1 int, c2 data, c3 varchar(10))

Inserir no separador2
Valores (1, '2000-01-01', 'testar')

CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO

criar tabela t
([runId] int not null, [scalingFactor] float not null)

-- CONSULTA REPRO. Espera-se que o lote abaixo devolva uma linha, mas não a obtemos
truncar tabela t
DECLARAR @date DATA, @numDates INT

INSERIR EM VALORES T(1, 1)
DECLARAR @date DATA, @numDates INT
SELECT @date = max(R.c2) , @numDates = COUNT(distinct R.c2)
FROM tab1 R
INNER JOIN t D ON R.c1 = D.runId

select *
FROM tab2 S -- CCI
EM QUE S.c2 = @date

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".