如何将表移动到 SQL Server 2008 中的特定文件组

发布于 2024-07-17 00:16:45 字数 124 浏览 9 评论 0原文

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

我不知道该怎么做?

我是否只使用ALTER blah blah TO MyFileGroup

I've just created a secondary filegroup and wish to move some tables over to it and then make it read-only.

I'm not sure how to do this?

do i just use the ALTER blah blah TO MyFileGroup ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逆流 2024-07-24 00:16:45

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

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

Something like this should help:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields)
    WITH (DROP_EXISTING = ON) ON [NewFilegroup]
不如归去 2024-07-24 00:16:45

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

来自 SQL Server 2008 联机丛书:

将现有索引移动到不同的文件组或分区
方案

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

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

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

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

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

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

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

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

[SQL Server 2008 之前版本:要将现有表放在不同的文件组 (SSMS) 上,

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

更有效的方法是

创建聚集索引
桌子。 如果表中已经有一个
聚集索引,您可以使用
CREATE INDEX命令的WITH
DROP_EXISTING 子句重新创建
聚集索引并将其移动到
特定文件组。 当一个表有
聚集索引,叶级
的索引和数据页
表本质上合而为一
相同的。 该表必须存在于
存在聚集索引,所以如果您
创建或重新创建集群
索引——将索引放在
特定文件组 - 您正在移动
表也​​添加到新文件组。

信用:Brian Moran

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

There are two ways; one from SSMS and the other using TSQL.

From SQL Server 2008 Books Online:

To move an existing index to a different filegroup or partition
scheme

  • In Object Explorer, connect to an instance of the SQL Server Database
    Engine and then expand that instance.

  • Expand Databases, expand the database that contains the table with
    the specific index, and then expand
    Tables.

  • Expand the table in which the index belongs and then expand Indexes.

  • Right-click the index to be moved and then select Properties.

  • On the Index Properties dialog box, select the Storage page.

  • Select the filegroup in which to move the index.

You cannot move indexes created using
a unique or primary key constraint by
using the Index Properties dialog box.
To move these indexes, you need to
drop the constraint using ALTER TABLE
(Transact-SQL) with the DROP
CONSTRAINT option and then re-create
the constraint on the desired
filegroup using ALTER TABLE
(Transact-SQL) with the ADD CONSTRAINT
option.

If the table or index is partitioned,
select the partition scheme in which
to move the index.

[Pre SQL Server 2008: To place an existing table on a different filegroup (SSMS)

  • Expand Databases, expand the database containing table, and then click Tables.
  • In the Details pane, right-click the table, and then click Design Table.
  • Right-click any column, and then click Properties.
  • On the Tables tab, in the Table Filegroup list, select the filegroup on which to place the table.
  • Optionally, in the Text Filegroup list, select a filegroup on which to place any text, image, and text columns. ]

A more effective way is

to create a clustered index on the
table. If the table already has a
clustered index, you can use the
CREATE INDEX command's WITH
DROP_EXISTING clause to recreate the
clustered index and move it to a
particular filegroup. When a table has
a clustered index, the leaf level of
the index and the data pages of the
table essentially become one and the
same. The table must exist where the
clustered index exists, so if you
create or recreate a clustered
index—placing the index on a
particular filegroup—you're moving the
table to the new filegroup as well.

Credit: Brian Moran

You can create (or recreate) the clustered index specifying the new filegroup for the ON clause and that will move the table (data). But if you have nonclustered indexes and want them on the other filegroup you must drop and recreate them also specifying the new filegroup in the ON clause. Ref.

何止钟意 2024-07-24 00:16:45

我同意马克的观点。 重建集群效果很好,并且比任务 -> 收缩数据库 -> 文件 -> 快得多。 通过将数据迁移到另一个文件来清空文件。

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

I agree with Marc. Rebuild cluster works well and is much faster than Tasks->Shrink Database->Files-> Empty file by migrating data to another file.

Creating indexes individualy allows controll over the load on the system without creating huge log files from select * into [your.new.table.] from .....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文