FIX: Неможливо створити статистику під час виконання інструкції для її безпосереднього або фонового створення в SQL ServerSQL 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 ServerSQL Server 2014. Якщо значення даних містять понад 15 значущих десяткових розрядів, а розподіл даних недостатньо розподілений і досить щільний у деяких тонких діапазонах, статистику неможливо створити, і повідомлення про помилку не з'являється.

Спосіб усунення проблеми

Вперше виправлено цю проблему в наступному сукупному оновленні SQL ServerSQL Server.

Сукупний пакет оновлень 1 за SQL Server 2014 р. (SP1) /uk-ua/help/3067839

Сукупний пакет оновлень 8 за SQL Server 2014 р. /uk-ua/help/3067836

Відомості про сукупні оновлення для SQL ServerSQL 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 підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".