Sql Server Bulkinsertを使用して、夜間に静かに実行されるスケジュールされたジョブを通じて、XMLファイルからDBに大量のデータをアップロードしています。ゾンビレコードを一括して挿入できますか?
背景
このダミーモデル考えてみましょう:
+====================+ +====================+
+ INVOICE + + INVOICE LINES +
+====================+ +====================+
+ PK + InvoiceId +-I-┐ + PK + InvoiceLineId +
+ + ... + └IX-+ FK + InvoiceId +
+ + ... + + + ... +
+====================+ +====================+
を私のソースは、信頼性の高いデータを私に提供することが期待されていますが、ミス/エラーが起こるのか。 Invoice Lines
のInvoiceId
FKは、Invoice
に存在しないInvoiceId
を指している可能性があります。
私の質問
はBulkinsert原因ゾンビのレコードを間違って参照されるデータを供給することはできますか?
制約を再度オンにすると、それらを挿入すると(ログ可能)警告が表示されますか?
もしそうなら、これらはヒト検出可能であろう。アップロード後のクリーンアップを作成することができました。アップロード前の小切手は非常に複雑で、私の責任ではありません。彼らは、依存関係への参照を持っている ので、存在する理由がない、データベースに格納され
レコード、経由:私はゾンビレコードで何を意味するかに余分明確にする
PS
外部キー は存在しない別のテーブルにあります。
私が知っている限り、これは一般的に受け入れられている用語です。
と悪い行を検出することができますか? – TheGameiswar
最も簡単なことは、NOT EXISTSを使用して監査レポートを実行して事前にこれらを見つけることです。 FK制約を有効にしても、壊れた制約のリストは表示されませんが、単純なSELECTが使用されます。あなたはこれらの悪い記録をどうしますか?チェックや削除のために人間に転送する? –
制約を元に戻すと、制約は失敗します。 – TheGameiswar