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.
- 1 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 SP1
- 6 kaupiamasis naujinimas, skirtas „SQL Server“ 2014
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:
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2014 SP1
- Naujausias "„SQL Server“ 2014" kaupiamasis naujinimas
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.