SSRS có khóa bảng khi truy vấn không?


9

DBA cao cấp của tôi nói với tôi rằng việc thực thi Truy vấn SQL theo mặc định không khóa bảng.

Tôi đã gặp một số vấn đề với báo cáo Dịch vụ báo cáo máy chủ SQL (SSRS) của mình mà dường như đang gặp một số vấn đề với việc khóa và gặp một số lỗi.

Tôi đã làm một số Google nhưng không tìm thấy bất cứ điều gì.

Các báo cáo SSRS có khóa các bảng đang được truy vấn không?

Có tài liệu MSDN nào ghi lại hành vi này một cách cụ thể không?


Chúng tôi đã có cùng một vấn đề. Mặc dù về mặt kỹ thuật không phải là câu trả lời cho câu hỏi của bạn, chúng tôi đã khắc phục nhanh bằng cách bắt đầu truy vấn dữ liệu với SET TRANSACTION ISOLATION LEVELví dụ READ UNCOMMITTEDnếu bạn không ngại mạo hiểm với một vài lần đọc bẩn.
Jeroen

Cũng như một lưu ý cho tương lai, bạn có thể chuyển hướng tải báo cáo sang các phần thứ hai có thể đọc được với Nhóm
Luôn

Câu trả lời:


7

Câu trả lời ngắn gọn: Không

Lâu hơn...

SQL Server không biết rằng đó là SSRS gửi cho nó một truy vấn. Vì vậy, truy vấn từ SSRS sẽ chạy như mọi truy vấn khác.

Nhiều khả năng là trình tối ưu hóa truy vấn quyết định sử dụng khóa bảng cho truy vấn SSRS. tất nhiên, nó có thể là một vấn đề khác, nhưng đó là một câu hỏi khác


Vậy thì SRSS có cố khóa bảng khi nó truy vấn không?
hỗn loạn

Câu lệnh T-SQL dẫn đến một số loại khóa hoặc loại khác, tùy thuộc vào câu lệnh T-SQL. Nó không phụ thuộc vào việc câu lệnh đó bắt nguồn từ đâu (SSRS, cửa sổ truy vấn, ứng dụng, v.v.)
Eric Higgins

4

tiền bối của tôi nói với tôi rằng để thực thi SQL Query theo mặc định không khóa bảng.

Đây là sự thật. Tuy nhiên, điều đó không có nghĩa là một truy vấn không thể khóa bảng.

báo cáo SSRS thực sự sẽ khóa bất kỳ bảng nào đang được truy vấn?

SSRS lấy dữ liệu được sử dụng để hiển thị báo cáo bằng cách chạy truy vấn hoặc thủ tục được lưu trữ đối với cơ sở dữ liệu.

Truy vấn này được xác định bởi nhà phát triển và cuối cùng có thể khóa một bảng (hoặc bảng), tùy thuộc vào mức độ cô lập và số lượng hàng có liên quan. (Trên thực tế, có thể có trường hợp bạn muốn thực hiện điều này trên mục đích .) Điểm mấu chốt là tùy thuộc vào nhà phát triển cách khóa hoạt động cho truy vấn. SSRS không thể giải quyết vấn đề này cho bạn. Đó là lý do tại sao không có bất kỳ tài liệu nào.

Xem xét (ví dụ):

  • Sử dụng READ UNCOMMITTEDnếu đọc bẩn là được
  • Kích hoạt và sử dụng mức cô lập ảnh chụp nhanh
  • Đăng nhập vận chuyển ở chế độ Chờ và chạy các truy vấn đối với bản sao chỉ đọc

2

Làm thế nào để bạn biết rằng có bất kỳ khóa khi báo cáo đang chạy? Tôi sẽ đề nghị bạn kiểm tra truy vấn / lưu trữ Proc là nguồn của báo cáo và đảm bảo nó hoạt động tốt.

Nếu bạn chắc chắn truy vấn nguồn đang hoạt động tốt, hãy thử xác định chính xác vấn đề bằng cách sử dụng trình cấu hình máy chủ SQL. Liên kết dưới đây có thể giúp:
/programming/9107383/sql-server-profiler-capture-calls-to-your-database-stored-procs-during-ssrs


bởi vì tôi đang chạy báo cáo trên một vài trình duyệt và báo cáo tiếp tục gặp lỗi mà quá trình bị khóa với khóa chết.
hỗn loạn

Trong trường hợp đó, rất có thể báo cáo của bạn đang cố đọc dữ liệu bị khóa bởi người dùng khác (ví dụ: ai đó đang cập nhật cùng một bản ghi). Bạn có thể thêm "không khóa" vào tất cả các câu lệnh "Chọn", nếu đọc dữ liệu không được cam kết là ok.
Bầu trời
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.