Symptomen
Stel dat u een instructie uitvoert om statistieken te maken of een instructie uitvoert die statistieken op de achtergrond maakt in Microsoft SQL Server 2014. Wanneer de gegevenswaarden meer dan vijftien significante decimale cijfers bevatten en de gegevensverdeling niet goed verdeeld is en niet tamelijk dicht is in bepaalde dunne bereiken, kunnen de statistieken niet worden gemaakt en wordt er geen foutbericht weergegeven.
Oplossing
Het probleem werd voor het eerst opgelost in de volgende cumulatieve update van SQL Server.
Cumulatieve update 1 voor SQL Server 2014 SP1 /nl-nl/help/3067839
Cumulatieve update 8 voor SQL Server 2014 /nl-nl/help/3067836
Informatie over cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:
- Meest recente cumulatieve update voor SQL Server 2014 SP1
- Meest recente cumulatieve update voor SQL Server 2014
Meer informatie
U kunt de volgende code gebruiken om dit probleem te reproduceren op een server met meer dan vier kernen:
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
Status
Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in het gedeelte 'Van toepassing op'.