Symptom
Anta att du har en tabell som innehåller en kolumn av datatypen DATE och att du har implementerat CCSI (Clustered Column Store Index) i den här tabellen i Microsoft SQL Server 2014. När du försöker köra en fråga mot tabellen genom att använda datatypen DATE som avgränsare kan felaktiga data returneras.
Till exempel:skapa tabell tab2
(C1 Heltal, C2 Datum, C3 Varchar(10))
CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO
Välj *
FROM tab2 S – tabell med grupperat columnstore-index
WHERE S.c2 = @date -- variabel av datatypen Date
Lösning
Information om Service Pack
Lös problemet genom att skaffa Service Pack 1 för SQL Server 2014.
Mer information om SQL Server 2014 Service Pack 1 (SP1) finns i buggar som åtgärdas i SQL Server 2014 Service Pack 1.
Information om kumulativ uppdatering
Det här problemet åtgärdades först i följande kumulativa uppdatering av SQL Server.
Rekommendation: Installera den senaste kumulativa uppdateringen för SQL Server
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
- Senaste kumulativa uppdateringen för SQL Server 2014 SP1
- Senaste kumulativa uppdateringen för SQL Server 2014
Mer information
Använd följande kod för att återskapa det här problemet:create table tab1
(C1 Int, C2 Date)
Infoga i tab1
Värden (1 , '2000-01-01')
CREATE NONCLUSTERED INDEX [idxtab1c2] ON tab1
(
c2 ASC
)
WITH (PAD_INDEX = AV, STATISTICS_NORECOMPUTE = AV, SORT_IN_TEMPDB = AV, DROP_EXISTING = AV, ONLINE = AV, ALLOW_ROW_LOCKS = PÅ, ALLOW_PAGE_LOCKS = PÅ)
skapa tabell tab2
(C1 Heltal, C2 Datum, C3 Varchar(10))
Infoga i tab2
Värden (1, '2000-01-01', 'Test')
CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)
GO
skapa tabell
([runId] int not null, [scalingFactor] float not null)
-- REPRO FRÅGA. Nedan batch förväntas returnera en rad men vi får det inte
Trunkera tabell t
DEKLARERA @date DATUM, @numDates HELTAL
INSERT I T-VÄRDEN(1, 1)
DEKLARERA @date DATUM, @numDates HELTAL
SELECT @date = max(R.c2) , @numDates = ANTAL(distinkt R.c2)
FROM tab1 R
INRE KOPPLING t D PÅ R.c1 = D.runId
Välj *
FROM tab2 S -- CCI
WHERE S.c2 = @date
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".