KORRIGERING: Det går inte att skapa statistik när du kör satsen för att skapa den direkt eller i bakgrunden i SQL Server 2014

Gäller för
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptom

Anta att du kör en sats för att skapa statistik eller kör en sats som skapar statistik i bakgrunden i Microsoft SQL Server 2014. När datavärdena har över 15 signifikanta decimalsiffror och datafördelningen inte är väl fördelad utan ganska tät vid vissa tunna intervall, kan statistiken inte skapas och det visas inget felmeddelande.

Lösning

Problemet åtgärdades först i följande kumulativa uppdatering av SQL Server.

Kumulativ uppdatering 1 för SQL Server 2014 SP1 /en-us/help/3067839

Kumulativ uppdatering 8 för SQL Server 2014 /en-us/help/3067836

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

      

Mer information

Du kan använda följande kod för att återskapa det här problemet på en server som har fler än fyra kärnor:

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 har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".