首页 > 解决方案 > 当 IDENTITY_INSERT 设置为 OFF 时,运行生成的脚本会抛出无法在表 '' 中插入标识列的显式值

问题描述

我正在尝试将数据库从具有 SQL Server 2017 Express 版的服务器移动到具有 SQL Server 2014 标准版的另一台服务器。由于版本问题,数据库备份/恢复不是一个选项,所以我必须为整个数据库生成脚本并在新服务器上运行它们。

由于我的数据库总大小约为 4 GB(含数据),所以我首先只创建了模式脚本并在目标服务器上运行它们,效果非常好。然后,我创建了仅数据脚本,并将数据库兼容性设置为 SQL Server 2014 Express。

当我在目标系统上运行这些脚本时,会出现很多错误,如下所示。

当 IDENTITY_INSERT 设置为 OFF 时,无法为表 '' 中的标识列插入显式值。

我知道问题是因为我面临此问题的表的标识列设置为 true,然后我为标识列提供值。我想对旧服务器数据库中的标识列使用相同的值。

如何成功恢复此数据库?

标签: sqlsql-serversql-server-2014sql-server-2017

解决方案


在插入标识列之前,您必须使用set identity_insert <table name> on. 检查此命令。完成后,set identity insert off.

也许有一些选项可以恢复身份。在常规 SQL Server 还原中运行正常。


推荐阅读