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

时间:2009-04-03 03:26:01

标签: sql-server-2008 filegroup

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

我不确定该怎么做?

我只使用ALTER blah blah TO MyFileGroup

3 个答案:

答案 0 :(得分:25)

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

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields)
    WITH (DROP_EXISTING = ON) ON [NewFilegroup]

答案 1 :(得分:7)

有两种方法;一个来自SSMS,另一个来自TSQL。

从SQL Server 2008联机丛书:

  

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

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

  •   
  • 展开数据库,展开包含该表的数据库   具体索引,然后展开   表

  •   
  • 展开索引所属的表格,然后展开“索引”。

  •   
  • 右键单击要移动的索引,然后选择“属性”。

  •   
  • 在“索引属性”对话框中,选择“存储”页面。

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

  •   
     

您无法移动使用创建的索引   一个唯一的或主键约束   使用“索引属性”对话框。   要移动这些索引,您需要   使用ALTER TABLE删除约束   (Transact-SQL)与DROP   CONSTRAINT选项然后重新创建   对期望的约束   使用ALTER TABLE的文件组   (Transact-SQL)与ADD CONSTRAINT   选项。

     

如果表或索引已分区,   选择其中的分区方案   移动索引。

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

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

更有效的方法是

  

在上创建聚簇索引   表。如果表已经有了   聚集索引,你可以使用   CREATE INDEX命令的WITH   DROP_EXISTING子句重新创建   聚集索引并将其移动到   特定的文件组。当一张桌子有   聚集索引,叶子级别   索引和数据页面   表基本上成为一个和   相同。该表必须存在于哪里   聚集索引存在,所以如果你   创建或重新创建群集   index-将索引放在a上   特定的文件组 - 你正在移动   表也​​适用于新文件组。

信用:Brian Moran

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

答案 2 :(得分:0)

我同意马克。重建群集运行良好,并且比任务更快<&gt;收缩数据库 - &gt;文件 - &gt; Empty file by migrating data to another file.

单独创建索引可以控制系统上的负载,而无需从select * into [your.new.table.] from .....

创建大量日志文件