KB3030619 – ÅTGÄRD: Felaktiga data returnerades när du kör en fråga i kolumnen DATE i SQL Server 2014

Gäller för
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)

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:

      

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".