SQL SERVER覆寫時出錯提示“一個資料表上不得超過249個非聚集索引或資料行統計資料。錯誤號1901”
為什麼?如何解決? 问题点数:50、回复次数:3Top
1 楼ilonliu(ilonliu)回复于 2006-03-04 10:58:26 得分 0
upTop
2 楼msjqd(黑色幽默)回复于 2006-03-04 11:09:04 得分 20
是索引建立过多
还是统计结果的字段过多
帮你顶一下Top
3 楼wgsasd311(自强不息)回复于 2006-03-04 12:10:33 得分 30
该错误发生于以下情况:
表已经具有 250 个索引。
或
表具有许多索引,且正在创建或更新统计。如果基列尚不具有索引,则 Microsoft® SQL Server™ 为每组创建的或更新的列级别统计在 sysindexes 中创建一个条目。
下面的示例通过在具有 250 个索引的表上更新统计而产生该错误信息:
USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'TestCols')
DROP TABLE TestCols
GO
DECLARE @counter int, @stmt varchar(255)
SET @counter = 1
CREATE TABLE TestCols
(
c1 int IDENTITY(1, 1),
c2 char(255)
)
-- Creating 250 indexes.
WHILE (@counter < 251)
BEGIN
IF (@counter = 1)
CREATE UNIQUE CLUSTERED INDEX Ind1 ON TestCols (c1)
ELSE
BEGIN
SELECT @stmt = 'CREATE INDEX t1Ind' + LTRIM(STR(@counter)) +
' ON TestCols (c1)'
EXEC (@stmt)
END
SET @counter = @counter + 1
END
-- Updating Statistics. Returns error 1910.
UPDATE STATISTICS TestCols (c2) WITH COLUMNS, FULLSCAN
对策
或者:
修改 CREATE INDEX 语句以使用不超过 250 个索引。
或
删除所有不用的非聚集索引以成功创建或更新统计。Top




