Dự kiến thỉnh thoảng có những bế tắc trên RDBMS khóa như SQL Server / Sybase.
Bạn có thể viết mã trên máy khách để thử lại theo khuyến nghị MSDN "Xử lý bế tắc" Về cơ bản, hãy kiểm tra SQLException và có thể nửa giây sau, thử lại.
Nếu không, bạn nên xem lại mã của mình để tất cả quyền truy cập vào các bảng theo cùng một thứ tự. Hoặc bạn có thể sử dụng SET DEADLOCK_PRIORITY để kiểm soát ai trở thành nạn nhân.
Trên MSDN dành cho SQL Server có "Giảm thiểu các bế tắc" bắt đầu
Điều này cũng đề cập đến "Sử dụng mức cô lập thấp hơn" mà tôi không thích (giống như nhiều kiểu SQL ở đây trên SO) và là câu hỏi của bạn. Đừng làm điều đó là câu trả lời ... :-)
- Điều gì có thể xảy ra do sử dụng (nolock) trên mỗi SELECT trong SQL Server?
- https://dba.stackexchange.com/q/2684/630
Lưu ý: MVCC loại RDBMS (Oracle, Postgres) không có vấn đề này. Xem http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversaction nhưng MVCC có các vấn đề khác.