Một số bối cảnh:
Lúc đầu, chúng tôi đã viết các báo cáo chỉ "thẳng lên", không có bất kỳ gợi ý khóa nào trong các truy vấn. Với các báo cáo lớn hơn, điều này đôi khi sẽ gây ra vấn đề khóa. Đầu tiên, chúng tôi đã khắc phục điều này bằng cách sử dụng WITH (NOLOCK)
gợi ý cho các bảng trong truy vấn.
Bởi vì (a) nó khá gây khó chịu, và (b) thật dễ dàng để quên đi những gợi ý cho một trong các bảng, chúng tôi chuyển đến một môi trường tiếp cận thứ hai TRANSACTION ISOLATION LEVEL
đến READ UNCOMMITTED
(mà là tốt) ở phía trên cùng của truy vấn mỗi tập dữ liệu.
Như bạn có thể đoán, vẫn dễ dàng quên gợi ý cho một trong các bộ dữ liệu. Vì vậy, điều này dẫn đến câu hỏi:
Câu hỏi: các tùy chọn để gửi NOLOCK
gợi ý cùng với các truy vấn báo cáo là gì?
Tái bút Tôi nhận ra đây là một vấn đề XY ở một mức độ nào đó (với rất nhiều tùy chọn khác của tôi cho X, chẳng hạn như tối ưu hóa truy vấn, không thực hiện báo cáo trên cơ sở dữ liệu vận hành, v.v.), nhưng dù sao cũng đã cố gắng đặt câu hỏi hợp lệ này .
Tùy chọn:
Dưới đây là các tùy chọn được đề cập ở trên, với các tùy chọn bổ sung mà tôi tò mò nếu chúng hoạt động:
- Đặt
WITH (NOLOCK)
gợi ý cho mỗi bảng. (khó chịu, rất dễ quên) - Đặt mức cô lập
READ UNCOMMITTED
cho toàn bộ truy vấn. (vẫn dễ quên) - Có thể chỉ định điều này ở cấp báo cáo ? Ví dụ: đảm bảo tất cả các truy vấn dữ liệu cho một báo cáo sẽ được chạy mà không bị khóa.
- Có thể chỉ định điều này ở một số cấp độ SSRS khác không? Ví dụ: có thể đặt điều này cho một Thư mục báo cáo nhất định hoặc bằng cách sử dụng tiện ích mở rộng?
- Có thể chỉ định điều này ở cấp chuỗi dữ liệu / chuỗi kết nối không? Ví dụ: tất cả các báo cáo có liên quan có sử dụng một "Nguồn dữ liệu không khóa" nhất định không?
- Liên quan đến tùy chọn trước: có lẽ bạn có thể chỉ định gợi ý khóa mặc định cho "người dùng không khóa" cụ thể (người dùng được sử dụng trong kết nối)?
- ???
Những lựa chọn khả thi? Có những lựa chọn tôi đã bỏ lỡ?