Požymiai
Tarkime, kad vykdote sakinį, kad sukurtumėte statistiką, arba vykdote sakinį, kuris sukuria statistiką fone "Microsoft „SQL Server“ 2014". Kai duomenų reikšmėse yra daugiau nei 15 reikšminių dešimtainių skaitmenų, o duomenų pasiskirstymas nėra gerai paskirstytas ir gana tankus kai kuriuose plokštiuose diapazonuose, statistikos sukurti negalima ir klaidos pranešimo nerodoma.
Sprendimas
Problema pirmą kartą buvo išspręsta šiame kaupiamajame „SQL Server“ naujinime.
1 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 SP1 /en-us/help/3067839
8 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 /en-us/help/3067836
Apie kaupiamuosius „SQL Server“ naujinimus
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
Galite naudoti šį kodą, norėdami atkurti šią problemą serveryje, kuris turi daugiau nei keturis branduolius:
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
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.