sql - 当 IDENTITY_INSERT 设置为 OFF 时,运行生成的脚本会抛出无法在表 '' 中插入标识列的显式值
问题描述
我正在尝试将数据库从具有 SQL Server 2017 Express 版的服务器移动到具有 SQL Server 2014 标准版的另一台服务器。由于版本问题,数据库备份/恢复不是一个选项,所以我必须为整个数据库生成脚本并在新服务器上运行它们。
由于我的数据库总大小约为 4 GB(含数据),所以我首先只创建了模式脚本并在目标服务器上运行它们,效果非常好。然后,我创建了仅数据脚本,并将数据库兼容性设置为 SQL Server 2014 Express。
当我在目标系统上运行这些脚本时,会出现很多错误,如下所示。
当 IDENTITY_INSERT 设置为 OFF 时,无法为表 '' 中的标识列插入显式值。
我知道问题是因为我面临此问题的表的标识列设置为 true,然后我为标识列提供值。我想对旧服务器数据库中的标识列使用相同的值。
如何成功恢复此数据库?
解决方案
在插入标识列之前,您必须使用set identity_insert <table name> on
. 检查此命令。完成后,set identity insert off
.
也许有一些选项可以恢复身份。在常规 SQL Server 还原中运行正常。
推荐阅读
- javascript - 如何使用 Array.reduce 优化此聚合
- php - 如何在 Docker 设置中使用 PHP 连接到 MS SQL Server?
- php - PHP 数组键和值
- c# - Luhn算法整理
- tensorflow - 如何在 Tensorflow Hub 中使用自定义模型?
- html - 使用 rowspan 和 colspan 的 HTML 表格
- reactjs - 如何使用 React 16.8 Hook 正确获取项目索引?
- terraform - 连接的独立 ESXi 主机上的 Terraform vsphere_resource_pool - 获取资源池时出错
- excel - 使用偏移值复制/粘贴循环
- python - 无法使用 Requests lib 登录 Facebook