ИСПРАВЛЕНИЕ. Не удается создать статистику при выполнении инструкции для ее создания непосредственно или в фоновом режиме в SQL Server 2014 г.

Применяется к
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)

Проблема

Предположим, что вы выполняете инструкцию для создания статистики или оператор, который создает статистику в фоновом режиме в Microsoft SQL Server 2014. Если значения данных имеют более 15 значимых десятичных разрядов, а распределение данных не является хорошо распределенным и довольно плотным в некоторых тонких диапазонах, статистика не может быть создана, и сообщение об ошибке отсутствует.

Решение

Эта проблема была исправлена в следующем накопительном обновлении SQL Server.

Накопительный пакет обновления 1 для SQL Server 2014 с пакетом обновления 1 (SP1) /ru-ru/help/3067839

Накопительный пакет обновления 8 для SQL Server 2014 г. /ru-ru/help/3067836

Сведения о накопительных обновлениях для SQL Server

Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:

      

Дополнительные сведения

Для воспроизведения этой проблемы на сервере с более чем четырьмя ядрами можно использовать следующий код:

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

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».