如何将表移动到SQL Server 2008中的特定FileGroup

Pur*_*ome 17 filegroup sql-server-2008

我刚刚创建了一个辅助文件组,并希望将一些表移动到它,然后将其设置为只读.

我不知道怎么做?

我只是用它ALTER blah blah TO MyFileGroup

mar*_*c_s 25

这样的事情应该有所帮助:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields)
    WITH (DROP_EXISTING = ON) ON [NewFilegroup]
Run Code Online (Sandbox Code Playgroud)

  • 这是一个不同的故事 - 您可以在创建表时为Text/NText字段指定文件组,但联机丛书说:"CREATE TABLE中指定的任何大值列数据的存储随后都不能更改.":-( (3认同)

Mit*_*eat 7

有两种方式; 一个来自SSMS,另一个来自TSQL.

从SQL Server 2008联机丛书:

将现有索引移动到其他文件组或分区方案

  • 在对象资源管理器中,连接到SQL Server数据库引擎的实例,然后展开该实例.

  • 展开"数据库",展开包含具有特定索引的表的数据库,然后展开"表".

  • 展开索引所属的表,然后展开索引.

  • 右键单击要移动的索引,然后选择"属性".

  • 在"索引属性"对话框中,选择"存储"页面.

  • 选择要在其中移动索引的文件组.

您无法使用"索引属性"对话框移动使用唯一键或主键约束创建的索引.要移动这些索引,需要使用带有DROP CONSTRAINT选项的ALTER TABLE(Transact-SQL)删除约束,然后使用带有ADD CONSTRAINT选项的ALTER TABLE(Transact-SQL)在所需的文件组上重新创建约束.

如果表或索引已分区,请选择要在其中移动索引的分区方案.

[Pre SQL Server 2008:将现有表放在不同的文件组(SSMS)上

  • 展开"数据库",展开包含数据库的表,然后单击"表".
  • 在"详细信息"窗格中,右键单击该表,然后单击"设计表".
  • 右键单击任何列,然后单击"属性".
  • 在"表"选项卡上的"表文件组"列表中,选择要放置表的文件组.
  • (可选)在"文本文件组"列表中,选择要在其上放置任何文本,图像和文本列的文件组.]

一种更有效的方法是

在表上创建聚簇索引.如果表已有聚簇索引,则可以使用CREATE INDEX命令的WITH DROP_EXISTING子句重新创建聚簇索引并将其移动到特定文件组.当表具有聚簇索引时,索引的叶级和表的数据页基本上变为同一个.该表必须存在于聚簇索引所在的位置,因此,如果您创建或重新创建聚簇索引 - 将索引放在特定文件组上 - 您也将表移动到新文件组.

图片来源:Brian Moran

您可以创建(或重新创建)聚簇索引,为ON子句指定新文件组,并移动表(数据).但是,如果您有非聚簇索引并希望它们位于另一个文件组上,则必须删除并重新创建它们,同时在ON子句中指定新文件组.参考.