禁用复制,保留复制表?

问题描述 投票:0回答:1

我使用 SQL Server 2017 在 Database1 和 Database2 之间设置了事务复制。大约有 20 个表被复制到 Database2,其中一些表非常大。我想禁用复制,但同时我想保留复制到 DB2 的所有数据以及密钥等。简而言之,当我关闭复制时,我不想丢失任何复制的数据.

有什么推荐吗?

sql sql-server database-administration database-replication transactional-replication
1个回答
0
投票

重要提示:

在继续之前,请确保您有数据库 1 和数据库 2 的备份,以避免任何数据丢失。

请记住,此过程应谨慎执行,尤其是在生产数据库上,建议首先在非生产环境中进行测试,以确保顺利过渡。

此外,考虑记录整个过程并记录所采取的所有步骤以及迁移过程中遇到的任何问题,以供将来参考和故障排除。

1。暂停复制:

首先,暂停复制以阻止新事务复制到 Database2。

您可以使用 SQL Server Management Studio (SSMS) 或 T-SQL 命令来执行此操作。在 SSMS 中,右键单击复制发布并选择“暂停”。

2。为表生成脚本:

您需要编写每个复制表的结构和数据的脚本。您可以通过 SSMS 执行此操作:

右键单击 SSMS 中的数据库(Database1)。

转到“任务”>“生成脚本...”

在向导中,选择要编写脚本的特定表。

选择“架构和数据”选项。

生成脚本并保存。

3.在Database2上执行脚本:

在Database2上复制并执行生成的脚本。这将创建表并用数据填充它们。对于大桌子要小心,因为这可能需要一段时间。

4。重新建立参照完整性:

如果表之间有外键关系,则可能需要编写脚本并以正确的顺序在 Database2 上重新创建它们,以保持引用完整性。

5。删除复制组件:

确认数据复制成功且架构完好后,您可以安全地删除复制组件。

在 SSMS 中,右键单击复制发布并选择“删除”。

按照步骤删除出版物。这也将删除订阅。

6。清理复制对象:

手动清理在删除过程中未自动删除的任何剩余的复制相关对象,例如复制存储过程和触发器。

7。验证数据一致性:

仔细检查两个数据库中的数据以确保其一致。查找两个数据库之间的任何差异。

8。备份与维护:

定期备份 Database2,并确保任何未来的架构更改或数据更新都得到正确管理,而无需依赖复制。

© www.soinside.com 2019 - 2024. All rights reserved.