如何在不破坏复制的情况下将数据从主数据文件移动到其他数据文件

ado*_*lot 2 replication sql-server-2005 data-warehouse sql-server

我有一个使用事务复制复制的数据库。现在,我想将该数据库的一些数据备份到另一个分区,因为我的服务器磁盘空间不足。

我试图通过单击表中的设计和属性选项卡将“常规数据空间规范”更改为“次要”,使用 GUI 收费通过 SSMS 将文件移动到另一个文件组。当我尝试保存表格的设计时I get error Cannot drop the table 'dbo.MYTABLE' because it is being used for replication.

这里有几个问题:

  • 我应该在现有文件组“PRIMARY”的另一个分区中创建数据文件,还是打开新文件组而不是在新的“辅助”文件组中打开新数据文件更好?
  • 除了删除表之外,还有其他方法可以告诉 SQL 将数据保存到另一个文件吗?
  • 有没有办法可以在将某些表移动到另一个文件组时暂时从复制中排除它们,然后将它们再次放入快照中而无需重新初始化订阅者?

gbn*_*gbn 7

SSMS 正在创建表的副本,填充它,删除原始表。因此错误。

我会创建一个新的文件组,而不是将文件添加到主文件组,因为这些文件在文件组中的使用方式

您可以通过使用以下命令重建聚集索引将表“原位”移动到新文件组CREATE INDEX .. DROP_EXISTING

CREATE NONCLUSTERED INDEX PK_Mytable
    ON dbo.Mytable(PKColumn)
    WITH (DROP_EXISTING = ON)
    ON NewFileGroup
Run Code Online (Sandbox Code Playgroud)