次のSQL例外が発生しました。 トランザクションがロックリソースで別のプロセスでデッドロックされ、デッドロックの対象として選択されました。トランザクションを再実行します。バッチの終了時に、コミット不能なトランザクションが検出されます。トランザクションはロールバックされます。 ストアドプロシージャにトランザクションがありません。私は.netからトランスクリプトを行い、私はいつもそれらを使用して呼び出します。 これまでに会ったことがありますか?トランザクションがデッドロックされました
2
A
答えて
3
トランザクションは、どこで開始されてもトランザクションです。 c#またはRDBMSのいずれであろうと。
using
は、効果的にBEGIN TRANSCATIONを発行します。
MSDN (for SQL Server 2000 but still valid)は、デッドロックが検出されたときに自動的に再試行することをお勧めします。ここでコードを書き込むのではなく、Googleで多くの検索結果が表示されます。
0
トランザクションを使用するときは、デフォルトでは分離レベルを逐次化可能に設定するため注意が必要です。接続がプールに戻されると、そのレベルセットがまだ残っています。これは並行性に重大な影響を与える可能性があります。
関連する問題
- 1. ロック時にトランザクション(プロセスID 56)がデッドロックされましたか?
- 2. トランザクション(プロセスID 120)は、別のプロセスとのロックリソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行
- 3. SQL Azure - トランザクション(プロセスID 160)が別のプロセスとロックリソースでデッドロックされ、デッドロックの犠牲者として選択されました
- 4. トランザクションがロールバックされましたか?
- 5. トランザクション(プロセスID)は、別のプロセスとのロックリソースでデッドロックされ、デッドロックの犠牲者として選択されました。 in SQL Server 2014
- 6. PostgreSQLのデッドロックが検出されました
- 7. PL/pgSQL関数でデッドロックが検出されました
- 8. SqlServer、トランザクションのデッドロック、テーブルは実際にロックされていますか?
- 9. デッドロックが検出されましたが、それを特定できません
- 10. SQLトランザクション内のデッドロックの回避
- 11. apexremoteアクションが失敗しました - トランザクションが中止されました:タイムアウト
- 12. ネストされたトランザクションがなくても、レルム例外 "ネストされたトランザクションは許可されません"
- 13. バッチの最後にコミット不能なトランザクションが検出されました。トランザクションはロールバックされます
- 14. Hibernateトランザクションをコミットできませんでした。 org.hibernate.TransactionException:トランザクションが正常に開始されませんでした。
- 15. トランザクションが別のスレッド例外でロールバックされました
- 16. 非トランザクションセッションでJMSトランザクション例外がスローされました
- 17. PGError:ERROR:現在のトランザクションが中止されました
- 18. TransactionalEventListenerで書き込みコール/トランザクションが削除されました
- 19. org.hibernate.TransactionException:トランザクションが正常に開始されませんでした
- 20. トランザクションが正常に開始されませんでした。
- 21. event.data.admin CloudNetのトランザクションFirebaseがpermission_deniedで拒否されました。
- 22. SKPayments完全なトランザクションが2回呼び出されました
- 23. weblogic.transaction.internal.AppSetRollbackOnlyException:トランザクションでsetRollbackOnlyが呼び出されました
- 24. バッファリングされたチャネルによるデッドロック
- 25. System.out.printlnのデッドロックとサスペンドされたスレッド
- 26. SQLAlchemy/MySQLシリアル化されたアクセスのデッドロック
- 27. 次のエラーが表示される「org.neo4j.kernel.api.exceptions.TransactionFailureException:成功したとマークされたトランザクションはロールバックされました」
- 28. SQL Server:デッドロックの犠牲者。トランザクションを再開してください
- 29. Neo4j組み込みJava - トランザクションは成功とマークされましたが、トランザクションをコミットできませんでした。ロールバックされました。
- 30. org.hibernate.TransactionException:ネストされたトランザクションは
IMO MSDNはこの点では間違っています。思考せずに自動的に再試行すれば、他人の変更を失う可能性が非常に高くなります。 –
@AlexKuznetsov:デッドロックは、通常は同じ行ではなく、別のプロセスで同じテーブル/ページ/インデックスにあることがわかりました。行に最小限の書込みパスがある場合、同じコード/アクションを使用する2つの並行プロセスはデッドロックしません。しかし、INSERT親から子へ、親からDELETEへの子があればよいでしょう。私の場合は、とにかく他の変更を探しています。たとえば、編集のためにデータが画面上にどれだけ長く保存されているか分かりません。 – gbn
"同じコードを使用する同時プロセス/アクションはデッドロックしないでください" - ここでは、ストアドプロシージャが同じprocフォームで別の接続を処理する方法を示すreproがあります:http://sqlblog.com/blogs /alexander_kuznetsov/archive/2008/11/27/defensive-database-programming-if-statement-vs-where-clause.aspx –