我在大型数据库上设置了MSSQL合并复制。其中一个表有15亿条记录,导致快照代理在此表上超时。首先,我将表的数据导出到.csv文件,截断表,然后再次运行快照代理。现在取得了成功。在创建快照并且订户已同步之后,我想从.csv文件重新导入数据。但是,合并复制使用具有固定值的自动“身份范围管理”,我无法更改。其中一个值包含下一个起始值。插入表中的每个新记录将从此值开始递增1。 但是,导出的数据当然已经有了ID值,我想再次导入这些相应的ID。我已经将发布者/订阅者范围大小设置为100亿,但只有这样才能解决问题。
我如何能够使用自动身份范围管理重新导入此数据?
提前致谢。
答案 0 :(得分:1)
您可以执行以下操作:
确保.CSV文件中的ID在分配给Publisher的范围内。
运行SET IDENTITY_INSERT <Table Name> ON
- 这将允许插入标识值
将数据插入表格。有两种方法可以做到:
OR
这是一个技巧:复制代理不会选择使用Bulk_Insert
或BCP
插入的行。因此,在运行复制代理程序之前执行sp_addtabletocontents Table_Name
或使用FIRE_TRIGGERS
选项运行BCP。
4。运行SET IDENTITY_INSERT OFF` - 禁止插入标识值
您可以在10个样本行上测试它,然后重置两个系统。