Ознаки
Припустімо, що ви виконуєте інструкцію для створення статистики або інструкцію, яка створює статистику у фоновому режимі в 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.
- Останнє сукупне оновлення для SQL ServerSQL Server 2014 SP1
- Останнє сукупне оновлення для SQL ServerSQL Server 2014
Додаткові відомості
Щоб відтворити цю проблему на сервері з більш ніж чотирма ядрами, можна скористатися таким кодом:
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, перелічених у розділі "Застосовується до".