SQL Server 2019仅恢复单条备份记录至生产库遇导入导出错误求助
解决SQL Server导入导出向导中rowversion列插入报错的问题
问题原因
SQL Server的rowversion(旧称timestamp)列是系统自动维护的字段,用于跟踪行的修改状态,不允许手动插入或更新值。你遇到的报错就是因为导入向导尝试向该列写入数据,这属于硬性限制,忽略警告无法解决。
方案一:修改导入导出向导的列映射(推荐)
- 在导入导出向导的选择源表和视图步骤,找到目标表,点击右侧的「编辑映射」按钮。
- 在映射窗口中定位到
DBTimeStamp列:- 取消该列的映射勾选,或者将目标列设置为「忽略」。
- 保存设置后继续完成向导,导入时SQL Server会自动为新插入的行生成
rowversion值。
方案二:用T-SQL手动操作(适合单条记录)
因为你仅需恢复单条记录,直接用T-SQL更高效:
插入新记录场景
-- 从备份表查询目标记录,排除DBTimeStamp列 INSERT INTO 生产表名 (列1, 列2, ...) -- 列出除DBTimeStamp外的所有业务列 SELECT 列1, 列2, ... -- 与目标表列一一对应 FROM 备份表名 WHERE 主键列 = '目标记录的主键值'
更新现有记录场景
如果是修正已有行的数量,用UPDATE语句:
UPDATE 生产表名 SET 数量列 = b.数量列, 其他需要修正的列 = b.其他需要修正的列 FROM 生产表名 t JOIN 备份表名 b ON t.主键列 = b.主键列 WHERE t.主键列 = '目标记录的主键值'
注意:无论插入还是更新,都不要指定
DBTimeStamp列,SQL Server会自动维护该字段的值。
补充提示
rowversion仅用于行版本跟踪,不应作为业务字段使用。如果你的业务逻辑依赖该列的具体值,需要重新评估表设计。
内容的提问来源于stack exchange,提问作者Tlm
相关产品推荐
相关产品推荐

