KB3030619 – PATAISA: pateikus užklausą stulpeliui DATE 2014 m. „SQL Server“ pateikiami neteisingi duomenys

Taikoma
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)

Požymiai

Tarkime, kad turite lentelę, kurioje yra duomenų tipo stulpelis DATE, ir "Microsoft „SQL Server“ 2014" šioje lentelėje įdiegėte jungtinių stulpelių saugyklos indeksą (CCSI). Kai bandote pateikti užklausą lentelei naudodami duomenų tipą DATE kaip kvalifikatorių, gali būti pateikti neteisingi duomenys.

Pvz.:kurti lentelę skirtukas2
(C1 Int, C2 data, C3 Varchar(10))

SUKURKITE KLASTERINĮ STULPELIŲ SAUGYKLOS INDEKSĄ [CCI_tab2] SKIRTUKE [TAB2] NAUDODAMI (DROP_EXISTING = IŠJUNGTA)
GO

pasirinkti *
FROM tab2 S – lentelė su klasteriniu stulpelių saugyklos indeksu
WHERE S.c2 = @date -- datos duomenų tipo kintamasis

Sprendimas

Pakeitimų paketo informacija

Norėdami išspręsti šią problemą, įsigykite 1 pakeitimų paketą, skirtą „SQL Server“ 2014.

Daugiau informacijos apie "„SQL Server“ 2014" 1 pakeitimų paketą (SP1) rasite "„SQL Server“ 2014" 1 pakeitimų paketo ištaisytos klaidos.

Kaupiamojo naujinimo informacija

Ši problema pirmą kartą buvo išspręsta šiame kaupiamajame "„SQL Server“" naujinime.

          

Rekomendacija: įdiekite naujausią "„SQL Server“" kaupiamąjį naujinimą

Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:

      

Daugiau informacijos

Norėdami atkurti šią problemą, naudokite šį kodą:create table tab1
(C1 sveikasis, C2 data)

Įterpti į skirtuką1
Reikšmės (1 , '2000-01-01')

KURTI NEKLASTERINĮ INDEKSĄ [idxtab1c2] SKIRTUKE 1
(
       c2 ASC
)
SU (PAD_INDEX = IŠJUNGTA, STATISTICS_NORECOMPUTE = IŠJUNGTA, SORT_IN_TEMPDB = IŠJUNGTA, DROP_EXISTING = IŠJUNGTA, PRISIJUNGUS = IŠJUNGTA, ALLOW_ROW_LOCKS = ĮJUNGTA, ALLOW_PAGE_LOCKS = ĮJUNGTA)

create table tab2
(C1 Int, C2 data, C3 Varchar(10))

Įterpti į skirtuką2
Reikšmės (1, '2000-01-01', 'Testas')

SUKURKITE KLASTERINĮ STULPELIŲ SAUGYKLOS INDEKSĄ [CCI_tab2] SKIRTUKE [TAB2] NAUDODAMI (DROP_EXISTING = IŠJUNGTA)
GO

create table t
([runId] int not null, [scalingFactor] float not null)

-- REPRO UŽKLAUSA. Tikimasi, kad žemiau esantis paketas pateiks eilutę, bet mes jos negauname
sutrumpinti lentelę t
DEKLARUOTI @date DATĄ, @numDates INT

INSERT INTO T VALUES(1, 1)
DEKLARUOTI @date DATĄ, @numDates INT
SELECT @date = max(R.c2) , @numDates = COUNT(distinct R.c2)
FROM tab1 R
INNER JOIN t D ON R.c1 = D.runId

pasirinkti *
FROM tab2 S -- CCI
KUR S.C2 = @date

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.