2

我们正在对一组数据库进行清理,第一步是将数据库中的所有索引放入正确的文件组中。

目前,这些索引混合在 DATA 文件组和 INDEXES 文件组之间;他们都需要移动到 INDEXES 文件组。

我猜这可以在脚本中轻松完成,但是您如何最好地处理主键上的索引?

以下命令

DROP INDEX table.indexname

产生错误:

索引“Answer.PK_Answer”上不允许使用显式 DROP INDEX。它被用于 PRIMARY KEY 约束强制执行。

那么最好的方法是什么?我是否需要删除主键,然后删除索引,然后重新创建主键,最后在正确的文件组上重新创建索引?这种方法有什么缺点吗?

4

3 回答 3

0

您可以尝试以下语句,该语句删除并重新创建索引文件组上的索引

CREATE CLUSTERED INDEX PK_Answer ON tablename(Answer) WITH (DROP_EXISTING = ON);

于 2011-03-24T13:21:51.197 回答
0

因为他有一个主键:

CREATE UNIQUE CLUSTERED INDEX PK_Answer ON tablename(Answer) WITH (DROP_EXISTING = ON);

于 2013-04-25T10:12:35.520 回答
0

如果其他人需要此信息(我确实需要),如果您希望将重新创建的 PRIMARY KEY 移动到另一个位置,请在末尾添加 FILEGROUP。以前的答案都没有规定这部分:

CREATE UNIQUE CLUSTERED INDEX PK_TableName_Answer ON TableName(Answer) WITH(DROP_EXISTING = ON) ON [INDEX];
于 2014-03-26T16:05:42.407 回答