这令人抓狂!相关代码已运行超过5年.
这是勺子....
我正在INSERT...SELECT使用主键作为标识列进入表.我插入时没有指定密钥 - SQL Server按预期生成密钥.
我在一个存储过程中进行插入,我在循环中调用(实际上是SSIS中的循环).存储过程将批量插入行(可配置).它可能一次插入1000行,也可能插入50,000行 - 无关紧要.它将适用于随机数量的调用(插入数千行),然后它将失败,突然出现,用a
违反主键/重复
错误.如果我检查身份种子 - 这是正确的.如果我再次开始这个过程,它会工作正常一段时间.
插入的值来自我加入的2个表,好像这很重要.
我的大部分代码如下:
WHILE @pk <= @max_pk
BEGIN
INSERT INTO tbl_claim_line (fk_batch_control_group, fk_claim, fk_provider, service_from_date, service_to_date, allowed, net_paid, COB, flex_1, flex_2, flex_3, flex_4)
SELECT
@fk_batch_control_group
, c.pk_claim
, p.pk_provider
, i.date_of_service_from
, i.date_of_service_to
, i.allowed_amount
, i.net_paid_amount
, i.cob_amount
, i.claimline_flex_1
, i.claimline_flex_2
, i.claimline_flex_3
, i.claimline_flex_4
FROM
tbl_import i
INNER JOIN
tbl_import__claim c ON i.claim_number = c.claim_number
LEFT JOIN
tbl_import__provider p ON ISNULL(i.provider_type,'') = ISNULL(p.provider_type,'') …Run Code Online (Sandbox Code Playgroud)