Tôi đã xem bài báo đó nhưng lưu ý rằng đối với tỷ lệ thất bại thấp, tôi thích mô hình "JFDI" hơn. Tôi đã sử dụng điều này trên các hệ thống âm lượng lớn trước đây (40k hàng / giây).
Trong mã của Aaron, bạn vẫn có thể nhận được một bản sao khi thử nghiệm đầu tiên trong điều kiện tải cao và nhiều lần ghi. (được giải thích tại đây trên dba.se ) Điều này rất quan trọng:các bản sao của bạn vẫn xảy ra, chỉ là ít thường xuyên hơn. Bạn vẫn cần xử lý ngoại lệ và biết khi nào nên bỏ qua lỗi trùng lặp (2627)
Chỉnh sửa:được Remus giải thích ngắn gọn trong một câu trả lời khác
Tuy nhiên, tôi sẽ có một TRY / CATCH riêng để kiểm tra chỉ đối với lỗi trùng lặp
BEGIN TRY
-- stuff
BEGIN TRY
INSERT etc
END TRY
BEGIN CATCH
IF ERROR_NUMBER() <> 2627
RAISERROR etc
END CATCH
--more stuff
BEGIN CATCH
RAISERROR etc
END CATCH