Sintomas
Suponha que você execute uma instrução para criar estatísticas ou execute uma instrução que crie estatísticas em segundo plano no Microsoft SQL Server 2014. Quando os valores de dados têm mais de 15 dígitos decimais significativos e a distribuição de dados não é bem distribuída e bastante densa em alguns intervalos estreitos, as estatísticas não podem ser criadas e não há nenhuma mensagem de erro.
Resolução
O problema foi corrigido pela primeira vez na atualização cumulativa seguinte do SQL Server.
Atualização cumulativa 1 para SQL Server 2014 SP1 /en-us/help/3067839
Atualização cumulativa 8 para SQL Server 2014 /en-us/help/3067836
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:
- Atualização cumulativa mais recente do SQL Server 2014 SP1
- Atualização cumulativa mais recente do SQL Server 2014
Mais informações
Você pode usar o seguinte código para reproduzir esse problema em um servidor com mais de quatro núcleos:
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
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".