我遇到以下问题:我想执行一个脚本,在该脚本中尝试将我还原的数据库(iNode-8-24-14-Orig)中的数据插入到我创建的数据库中。
代码是:
app.exe
但是我得到每个表的错误:
违反PRIMARY KEY约束“ XPKXHQ_HIER_DEF”。无法插入 对象“ dbo.XHQ_HIER_DEF”中的重复键。重复的键值为 (1)。
任何想法我该如何解决?我想提到的是,两个数据库中的表和列都相同。我知道我在说我已经在使用相同的主键,但是我不知道如何解决它。
答案 0 :(得分:2)
这是我对此网站的第一个问题。
我们在乎...为什么?
任何想法我该如何解决?
读取错误,修复数据?该错误非常清楚地说明了问题所在:
无法在对象'dbo.XHQ_HIER_DEF'中插入重复的密钥。
请勿多次插入相同的键值。期。如果您将字段定义为主键,则每个定义中的值在键中都是唯一的。
已经有一个标识为1的条目,或者您的源数据有多个具有相同值的行,这对于您的数据模型而言无效。
通常对于此类问题,实际读取错误会有所帮助。在您的情况下,描述中完全清楚出了问题所在,甚至为您提供了引起问题的值:
重复的键值为(1)。
答案 1 :(得分:1)
解决方案很明显:请勿插入重复的主键值。
根据我的推测,
HIER_KEY
字段组成所以:
/****************************************************/
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] ON;
GO
INSERT INTO [dbo].[XHQ_HIER_DEF]
([HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS])
SELECT [HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS]
FROM [iNode-8-24-14-Orig].[dbo].[XHQ_HIER_DEF] T1
WHERE NOT EXISTS(
SELECT 1 FROM [dbo].[XHQ_HIER_DEF] T2
WHERE
T1.HIER_KEY = T2.HIER_KEY
)
GO
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] OFF;
GO
/****************************************************/
警告:这样插入的性能可能特别是很糟糕。