过去,我以为我会使用针对集群索引的DROP INDEX语句和针对非集群索引的DROP STATISTICS语句删除假设索引。
我有一个数据库,其中充满了我想清除的DTA残留物;但是,当我尝试删除该对象时,总是收到一条错误消息,告诉我无法删除该对象,因为它不存在或您没有权限。我是服务器上的完整系统管理员,因此希望拥有执行任何操作的权利。
我已经尝试了DROP STATS和DROP INDEX语句,但是都给了我同样的错误。
有人删除过这些吗?我想念一个窍门吗?
附录
翻看一下,我只是注意到,如果我右击该对象,则“ Script As”和“ DELETE”选项均为灰色。
假设的屏幕截图怎么样?
—
詹森·坎伯兰
嗨杰森。运行SELECT * FROM sys.indexes WHERE is_hypothetical = 1
—
PseudoToad
DROP INDEX需要表的ALTER权限。您可以发出良性的ALTER TABLE语句来测试您的权限吗?(我知道。我知道。你是系统管理员。无论如何都要这样做。)
—
Mike Sherrill'Cat Recall'13
我假设您在SSMS中看到这些索引正确吗?如果是这样,请尝试刷新连接并查看索引是否仍然存在。它们可能已被删除。同时,
—
肯尼斯·费舍尔
DROP INDEX
对于聚簇索引和非聚簇索引而言,也是正确的语法。 DROP STATISTICS
专用于不同的统计信息。
是的...在SSMS中,我已经多次尝试了上述所有方法。CheckDB是干净的。我什至尝试通过o-SQL和SQLCMD进行操作,希望使用其他连接栈可以使它免费。我把毛巾扔进去并与之共处。在某些时候,我将删除并重新创建表。那肯定会解决它!
—
PseudoToad