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 = 5796722した後に選択すると、11024703 に設定されます。問題は、11024703 が存在せず、以下のクエリを実行しても結果が返されないため、その番号がどこから取得されているのかわかりません。StagingWarehouse.dbo.BusinessLeadsCompanyFKCustomerPKDataWarehouse.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これは、何らかの破損を示している可能性があります。おそらく、NCI に CI と比較して追加の行があるか、何らかの形で NCI に格納されている PK 値が無効です。

私は走るだろうDBCC CHECKTABLE

于 2013-04-14T17:40:42.777 に答える