Príznaky
Predpokladajme, že spúšťate príkaz na vytvorenie štatistiky alebo spustíte príkaz, ktorý vytvára štatistiku na pozadí v Microsoft SQL Server 2014. Ak hodnoty údajov obsahujú viac ako 15 platných desatinných miest a distribúcia údajov nie je správne rozložená a v niektorých malých rozsahoch je pomerne hustá, štatistika sa nedá vytvoriť a chybové hlásenie sa nezobrazí.
Riešenie
Tento problém bol prvýkrát opravený v nasledujúcej kumulatívnej aktualizácii SQL Server.
Kumulatívna aktualizácia 1 pre SQL Server 2014 SP1 /en-us/help/3067839
Kumulatívna aktualizácia 8 pre SQL Server 2014 /en-us/help/3067836
Informácie o kumulatívnych aktualizáciách pre SQL Server
Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli zahrnuté v predchádzajúcej kumulatívnej aktualizácii. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
- Najnovšia kumulatívna aktualizácia pre SQL Server 2014 SP1
- Najnovšia kumulatívna aktualizácia pre SQL Server 2014
Ďalšie informácie
Nasledujúci kód môžete použiť na reprodukciu tohto problému na serveri, ktorý má viac ako štyri jadrá:
use master
go
drop database <DataBase Name>
go
create database <DataBase Name>
go
ALTER DATABASE <DataBase Name> SET AUTO_UPDATE_STATISTICS OFF
go
use <DataBase Name>;
go
create table <Table Name>
(
id decimal(19,0) NULL
)
go
declare @i int = 0
DECLARE @NewRows AS table (id decimal(19,0))
insert into @NewRows values(1234567890123456789)
while @i < 12 begin
insert into @NewRows select * from @NewRows
set @i = @i + 1
end
insert into <Table Name> select * from @NewRows
go
declare @i int = 0
DECLARE @NewRows AS table (id decimal(19,0))
insert into @NewRows values(1234567890123457691)
while @i < 16 begin
insert into @NewRows select * from @NewRows
set @i = @i + 1
end
insert into <Table Name> select * from @NewRows
go
declare @i int = 0
DECLARE @NewRows AS table (id decimal(19,0))
insert into @NewRows values(1234567890123457692)
while @i < 12 begin
insert into @NewRows select * from @NewRows
set @i = @i + 1
end
insert into <Table Name> select * from @NewRows
go
create statistics stat on <Table Name> ([id])
go
use master
go
drop database <DataBase Name>
go
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.