Belirtiler
Microsoft SQL ServerSQL Server 2014'te istatistik oluşturmak için bir deyim yürüttüğünüzü veya arka planda istatistik oluşturan bir deyim yürüttüğünüzü varsayalım. Veri değerleri 15'in üzerinde anlamlı ondalık basamağa sahipse ve veri dağılımı iyi dağılmamışsa ve bazı ince aralıklarda oldukça yoğunsa, istatistikler oluşturulamaz ve hata iletisi olmaz.
Çözüm
Sorun ilk olarak aşağıdaki toplu SQL Server güncelleştirmesinde düzeltilmiştir.
SQL Server 2014 SP1 için Toplu Güncelleştirme 1 /en-us/help/3067839
SQL Server 2014 için Toplu Güncelleştirme 8 /en-us/help/3067836
SQL Server toplu güncelleştirmeleri hakkında
SQL Server için her yeni toplu güncelleştirme, önceki toplu güncelleştirmeye dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. SQL Server için en son toplu güncelleştirmelere göz atın:
- SQL Server 2014 SP1 için en son toplu güncelleştirme
- SQL Server 2014 için en son toplu güncelleştirme
Daha Fazla Bilgi
Dörtten fazla çekirdeğe sahip bir sunucuda bu sorunu yeniden oluşturmak için aşağıdaki kodu kullanabilirsiniz:
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
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.