gpt4 book ai didi

sql-server - MSSQL合并复制自动标识范围管理

转载 作者:行者123 更新时间:2023-12-02 04:00:04 26 4
gpt4 key购买 nike

我已经在大型数据库上设置了MSSQL合并复制。其中一个表具有15亿条记录,并使快照代理在该表上超时。因此,首先我将表的数据导出到一个.csv文件,将其截断,然后再次运行快照代理。现在成功了。制作快照并同步订阅服务器后,我想从.csv文件中重新导入数据。但是,合并复制使用具有无法更改的固定值的自动“身份范围管理”。这些值之一包含下一个起始值。从该值开始,插入到表中的每个新记录将增加1。
但是,导出的数据当然已经具有其ID值,我也想再次导入这些对应的ID。我已经将发布者/订阅者的范围设置为100亿个,但这仅不能解决问题。

如何使用自动身份范围管理重新导入此数据?

提前致谢。

最佳答案

您可以执行以下操作:

  • 确保.CSV文件中的ID在分配给Publisher的范围内。
  • 运行SET IDENTITY_INSERT <Table Name> ON-这将允许插入身份值
  • 将数据插入表中。有2种方法可以做到:
  • 一次插入整个文件

  • 要么
  • 插入行的子集,然后确保已被复制:创建SSIS包,对于每100k或1M的行,将插入它们,然后运行复制代理。

  • 这是一个技巧:复制代理不会拾取插入 Bulk_InsertBCP的行。因此,在运行复制代理之前,请执行 sp_addtabletocontents Table_Name或使用 FIRE_TRIGGERS选项运行BCP。

    4。运行SET IDENTITY_INSERT OFF`-禁止插入身份值

    您可以在10个样本行上对其进行测试,然后重置两个系统。

    关于sql-server - MSSQL合并复制自动标识范围管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929829/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com