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:
- Atualização cumulativa mais recente para o SQL Server 2014 SP1
- Atualização cumulativa mais recente para o SQL Server 2014
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".