我们正在对一组数据库进行清理,第一步是将数据库中的所有索引都放到正确的文件组中。
目前,这些索引在DATA文件组和INDEXES文件组之间混合;他们都需要移动到INDEXES文件组。
我猜这可以在脚本中轻松完成,但是如何最好地处理主键上的索引呢?
以下命令
DROP INDEX table.indexname
产生错误:
不允许使用显式DROP INDEX 在索引'Answer.PK_Answer'。它是 用于PRIMARY KEY约束 执行。
那么最好的方法是什么?我是否需要删除主键,然后删除索引,然后重新创建主键,最后在正确的文件组上重新创建索引?这种方法有什么缺点吗?
答案 0 :(得分:0)
您可以尝试使用以下语句删除并重新创建索引文件组
上的索引创建CLUSTERED INDEX PK_Answer ON tablename(答案) WITH(DROP_EXISTING = ON);
答案 1 :(得分:0)
因为他有一把主键:
CREATE UNIQUE CLUSTERED INDEX PK_Answer ON tablename(Answer)WITH(DROP_EXISTING = ON);
答案 2 :(得分:0)
如果其他人需要此信息(我这样做),如果您希望将重新创建的PRIMARY KEY移动到另一个位置,请在末尾添加FILEGROUP。以前的答案都没有规定这一部分:
CREATE UNIQUE CLUSTERED INDEX PK_TableName_Answer ON TableName(Answer) WITH(DROP_EXISTING = ON) ON [INDEX];