私は値に私の一時テーブルを選択し、そのようなデータベースに挿入するストアドプロシージャを実行しているを選択1分に何千もの要求を処理するサーバーでは時間がかかる)、EmailAddress列のインデックスに一意制約エラー「UNIQUE KEY制約の違反」が発生します。INSERT INTO .. ..ユニーク制約違反
私は重複値を渡していないことを確認できます。私がいたとしても、DISTINCTに捕らえられるべきです。
-SQL Server 2008の -Stored PROC + SELECTとINSERTその後の間、INSERTを完了し、同じ/異なるストアドプロシージャに別の呼び出しがあったことが起こるんでし+ JDBCのCallableStatementの
をトランザクションを使用していません似たようなデータですか?もしそうなら、それを防ぐ最善の方法は何でしょうか?
いくつかのアイデア:本番環境でこの1つのSQL Serverと一度に通信する「クライアント」のインスタンスが多数存在するため、最初の反応は並行性の問題でしたが、自分では複製できないようです。それは私が持っていた最高の推測ですが、それは今のところどこにも行きません。これは、運用環境と比較して負荷が重要でないステージング環境では発生しません。それが私が並行性の問題を探し始めた主な理由でした。
両方のEmailAddressのNULL値が一意のキー制約に違反する可能性があります。この列がヌル可能な場合は、挿入を '存在しない 'として書き換えるかもしれません。 –
良い点。私はコード内のnullsに対してチェックを行いますが、私は再びSQLでそれをチェックできると思います。 –