1

我有一个返回错误结果的更新查询。

UPDATE StagingWarehouse.dbo.BusinessLeads
SET    CompanyFK = c.CustomerPK
FROM   StagingWarehouse.dbo.BusinessLeads s
       INNER JOIN DataWarehouse.dim.Customer c
         ON c.CustomerBK = s.CompanyBK
WHERE  s.businessleadbk = 5796722

businessleadbk = 5796722StagingWarehouse.dbo.BusinessLeads运行此语句后选择时,CompanyFK设置为 11024703。问题是CustomerPK11024703 onDataWarehouse.dim.Customer不存在并且运行以下查询不返回任何结果,所以我不知道它从哪里得到这个数字。

SELECT c.*
FROM   StagingWarehouse.dbo.BusinessLeads s
       INNER JOIN DataWarehouse.dim.Customer c
         ON c.CustomerBK = s.CompanyBK
WHERE  s.businessleadbk = 5796722
4

1 回答 1

1

UPDATE计划如下图

更新

计划中的所有运算符都发出 1 行。

SELECT计划是

选择

当 SQL Server 尝试在同一个表的聚集索引中查找相应的 PK 时,该行已经在CustomerBK索引中找到后以某种方式消失了。Customer这将表明某种腐败。与 CI 相比,NCI 可能有额外的行,或者存储在 NCI 中的 PK 值无效。

我会跑DBCC CHECKTABLE

于 2013-04-14T17:40:42.777 回答