等待时发生超时 缓冲锁存器类型2用于页面 (1:1535865),数据库ID 6。
这是我在尝试创建索引时获得了五次的错误消息
CREATE NONCLUSTERED INDEX YearIndx ON dbo.Papers
(
PublicationYear
)
论文表约有20,000,000条记录和175 GB
答案 0 :(得分:4)
如果您的问题涉及临时表而不是索引创建且错误消息中有“类型4”,则问题可能是SQL Server 2008 bug
如果“SORT_IN_TEMPDB = ON”,索引创建实际上涉及tempdb,这些问题可能是相关的。
建议对您的SQL Server版本应用累积更新。
等待缓冲区锁存时发生超时 - 类型4,bp 00000000FEAFB028,第12页:312752,stat 0xbc00e09,数据库ID:2,分配单元ID:724228131807060/351413755606409,任务0x00000000D2220838:0,等待时间20700,标志0x100000001a ,拥有任务0x0000000D22302808。继续等待。
答案 1 :(得分:3)
我从来没有遇到这种情况,对伟大的谷歌的搜索没有立即打击我,所以这是我会尝试的:
请确认您是否正在从SSMS查询窗口运行此查询。如果是,则转到查询,查询选项,执行。执行超时的价值是多少?
CREATE NONCLUSTERED INDEX YearIndx ON dbo.Papers
(
PublicationYear
)
WITH
(
SORT_IN_TEMPDB = ON
--, ONLINE=ON --Enterprise only
, ALLOW_ROW_LOCKS = OFF --default is on
, ALLOW_PAGE_LOCKS = OFF --default is on
, MAXDOP = 1 --all that you can allow
)
哦,并确保您阅读了创建索引语句,以确保我选择的选项适用于您的情况。例如,如果tempdb与db_name(6)位于同一组磁盘上,那么情况可能只会变得更糟
另一种选择是创建一个相同的空表,其中包含您想要的所有索引。然后你可以通过选择dbo.Papers轻轻地填充该表。完成后,使用一个批处理,事务处理,将dbo.Papers重命名为dbo.Papers_old,将dbo.Papers_new重命名为dbo.Papers。
最后,我在想你的索引。你是否绝对肯定只有PublicationYear的索引才能解决出现的问题?让我感到震惊的是,大多数人可能并不是在寻找一年内所写的所有内容。更有可能的是,约翰在今年撰写的所有论文,或上个月撰写的所有论文。