Symptomer
Anta at du har en tabell som inneholder en kolonne med datatypen dato , og du har implementert gruppert kolonne butikken indeks (CCSI) for denne tabellen i Microsoft SQL Server-2014. Når du prøver å spørre tabellen ved hjelp av datatypen dato som en kvalifikator, kan feil data returneres.
For eksempel:create table tab2(c1 int, c2 date, c3 varchar(10))
CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO
select *
FROM tab2 S -- Table with clustered columnstore index
WHERE S.c2 = @date -- variable of Date datatype
Oppløsning
Informasjon om oppdateringspakke
Hvis du vil løse dette problemet, får tak i Service Pack 1 for SQL Server-2014.
Hvis du vil ha mer informasjon om SQL Server 2014 Service Pack 1 (SP1), kan du se feil som er løst i SQL Server 2014 Service Pack 1.
Informasjon om kumulativ oppdatering
Dette problemet ble først løst i den følgende kumulative oppdateringen av SQL Server.
Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:
Hvis du vil ha mer informasjon
Bruk følgende kode for å gjenskape problemet:create table tab1(c1 int, c2 date)
insert into tab1
values (1 , '2000-01-01')
CREATE NONCLUSTERED INDEX [idxtab1c2] ON tab1
(
c2 ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
create table tab2
(c1 int, c2 date, c3 varchar(10))
insert into tab2
values (1, '2000-01-01', 'test')
CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO
create table t
([runId] int not null, [scalingFactor] float not null)
-- REPRO QUERY. Below batch is expected to return a row but we don’t get it
truncate table t
DECLARE @date DATE, @numDates INT
INSERT INTO t VALUES(1, 1)
DECLARE @date DATE, @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
WHERE S.c2 = @date
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".