質問: 数百万行のクライアント/親関係を持つ.NETアプリケーション内に2つのDataTableがあります。このデータは、SQL BulkCopyを介してSQL Serverデータベースに挿入する必要があります。この.NETアプリケーションの複数のインスタンスが、同じテーブルに異なるデータを並行して実行する可能性があります。 主キーの自動生成親テーブルにID列があります。 問題は、対応する外部キーを子テーブルに挿入する方法がわからないことです。 誰もバルクコピーを使ってこの1:N関係の問題を解決する方法を知っていますか?複数のインスタンスが実行される可能性があるため、.NETでIDを作成することはできません。 ありがとうダニエル
回答: これは、IDENTITY以上の自然キーをすべての主キーに使用する方が好きな理由の1つに過ぎません。 どの子供がデータソースのどの親に行くのかをどのように知っていますか?それらが列でリンクされている場合は、あまりにも困難ではありません。親行を挿入し、ステージング表に子行を挿入し、その列の親に参加している間に子行を挿入してIDを取得します。 関係が単にファイル内の相対位置またはそれに類似している場合、それはより困難になります。ファイル行#を含めることができますし、上の同じ手順を使用してそれらに参加します(child.line_num> parent.line_numと他のparent.line_numはそれらの2つの数字の間にありません)。ループを作成してIDを取得し、そのIDを使用してすべての子を挿入します。 SSISでこれを問題にすることなく設定できますが、遅くなることがあります。 あなたの問題(データソースなど)の詳細については、より詳細な情報を提供することができます。