为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8
【操作系统】:统信系统
【CPU】:arm64
【问题描述】*:我使用dts迁移工具把一台统信系统上达梦数据库中的数据迁移到sql文件,然后又把这个sql文件通过迁移工具要迁移到另一台统信系统的达梦数据库上,但是迁移不进去,老是报错:执行失败: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值,错误号: -2,723,位置: 第 1,090 行,我搜了一下,这是因为导出的文件中有自增ID导致的,可是不该出这问题啊,我用达梦的dts工具导出的sql文件,竟然再拿达梦的dts工具导入不进去,感觉有点矛盾啊,不管是啥错误,都不应该出现这样的错误,而且这个错误还解决不了,请问该怎么弄。
我的这个DTS工具导出界面为什么没有:映射为 AUTO_INCREMENT类型的选项呢
如果是DM到DM的迁移,也可以使用逻辑导出导入的方法。
麻烦帮我看下什么原因啊,我从现场的达梦数据库用dts导出数据到sql文件,然后导入到我本地的达梦数据库,批量导入时并发数设置10直接报错,大批量导入不进去,然后我就一个数据文件一个数据文件的导入,最后导入成功了,但是我系统登陆的时候又报错,说自增列没有开启,这就没有解决办法了吗请问?怎么设置都不起作用啊,难道官方提供的dts工具不能用吗

您看到的错误 -2723,根本原因是您数据库中的表使用了 IDENTITY 类型的自增列。
达梦数据库中的 IDENTITY 列是一个强约束自增列。在默认情况下 (IDENTITY_INSERT 为 OFF),它由数据库系统自动管理,禁止用户直接向该列插入值。因此,当您尝试执行包含具体 ID 值的 INSERT 语句时,就会触发该错误。
两种解决方法:
-- 在插入前开启 SET IDENTITY_INSERT 模式名.表名 ON; -- 您的INSERT语句必须明确指定列名 INSERT INTO 模式名.表名 (自增列名, 列2, 列3) VALUES (1, 'value2', 'value3'); INSERT INTO 模式名.表名 (自增列名, 列2, 列3) VALUES (2, 'value4', 'value5'); -- ... 更多INSERT语句 -- 插入完成后务必关闭 SET IDENTITY_INSERT 模式名.表名 OFF;或者重新配置DTS导出
在DTS工具的导出配置中,尝试将导出表结构中的自增列映射为 AUTO_INCREMENT 类型。这样生成的SQL文件中就不会包含对 IDENTITY 列的显式赋值了。