Sintomi
Si supponga di eseguire un'istruzione per creare statistiche o eseguire un'istruzione che crea statistiche in background in Microsoft SQL Server 2014. Quando i valori dei dati hanno più di 15 cifre decimali significative e la distribuzione dei dati non è ben distribuita e piuttosto densa in alcuni intervalli sottili, non è possibile creare le statistiche e non viene visualizzato alcun messaggio di errore.
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 1 per SQL Server 2014 SP1 /en-us/help/3067839
Aggiornamento cumulativo 8 per SQL Server 2014 /en-us/help/3067836
Informazioni sugli aggiornamenti cumulativi per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nell'aggiornamento cumulativo precedente. Scopri gli aggiornamenti cumulativi più recenti per SQL Server:
- Ultimo aggiornamento cumulativo per SQL Server 2014 SP1
- Ultimo aggiornamento cumulativo per SQL Server 2014
Altre informazioni
Puoi usare il codice seguente per riprodurre questo problema in un server con più di quattro core:
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
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".