在繁忙的生产数据库上禁用非聚集索引失败:超出锁定请求超时时间(错误:1222)

时间:2016-12-09 15:48:27

标签: sql-server sql-server-2008 indexing non-clustered-index

我有一个庞大而繁忙的生产数据库,我试图整理多年积累的索引并收回一些空间。但是我无法删除/禁用现有索引。它们都是非集群但是禁用失败并出现以下错误并且drop会锁定表,所以我在运行5分钟后最终取消该语句。

  

超出锁定请求超时时间。 (Microsoft SQL Server,错误:1222)

有什么想法吗?我确定我错过了一些非常明显的内容,但我认为非聚集索引只是元数据,所以应该快速轻松地删除。

ETA - 跟进问题 - 有没有办法可以手动将表锁定到Management Studio,以便快速运行?

1 个答案:

答案 0 :(得分:0)

您没有提到RDBMS版本,但假设它是MS SQL SERVER 2012,则只允许对here中的聚簇索引进行DROP索引ONLINE而不使用表上的锁。

您尝试删除索引但有人正在使用该表,因此LOCK TIMEOUT会发生。我认为只有在没有人访问依赖表的情况下才能删除索引:

  

应用表锁,表在索引操作期间不可用。