SQL Server:更改索引的文件组(也是PK)

时间:2011-02-10 13:23:05

标签: sql-server indexing filegroup

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

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

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

以下命令

DROP INDEX table.indexname

产生错误:

  

不允许使用显式DROP INDEX   在索引'Answer.PK_Answer'。它是   用于PRIMARY KEY约束   执行。

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

3 个答案:

答案 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];