症狀
假設你在 Microsoft SQL Server 2014 中執行一個敘述來建立統計資料,或是在背景中執行一個建立統計資料的陳述式。 當資料值超過 15 位有效十進位數,且資料分布分布不均勻且在某些狹窄區間相當密集時,統計資料無法產生,且不會有錯誤訊息。
解決方式
此問題首次在 SQL Server 的累積更新中得到修正。
2014 SQL Server SP1 累積更新 1 /en-us/help/3067839
2014 SQL Server 累積更新 8 /en-us/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 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。