Tôi có cơ sở dữ liệu trong đó tất cả quyền truy cập được kiểm soát bởi các thủ tục được lưu trữ. DBA muốn tránh cung cấp cho người dùng quyền truy cập đọc/ghi trực tiếp vào các bảng bên dưới mà tôi có thể hiểu được. Do đó tất cả việc cập nhật và lựa chọn dữ liệu được thực hiện thông qua các thủ tục lưu sẵn. Về cơ bản, ông đã tạo ra một vai trò có quyền EXECUTE cho tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu và cho người dùng vai trò đó.Quyền khi sử dụng "Thực thi sp_Executesql"
Vấn đề là một trong các thủ tục được lưu động sẽ tạo một truy vấn SQl và thực hiện nó thông qua "Execute sp_Executesql". Nếu không đi sâu vào chi tiết, truy vấn được tạo động bởi vì nó thay đổi đáng kể tùy thuộc vào nhiều tham số đầu vào của người dùng. Các thủ tục được lưu trữ trong câu hỏi chỉ là một câu lệnh sql SELECT tuy nhiên tôi thấy rằng chỉ cần cho phép thủ tục lưu trữ EXECUTE cho phép là không đủ. Các bảng bên dưới được tham chiếu trong thủ tục được lưu trữ sử dụng "Execute sp_Executesql" cần được cấp quyền truy cập "datareader" hoặc thủ tục được lưu trữ khác không thành công.
Bất kỳ suy nghĩ nào về cách sửa lỗi này? Tôi thực sự muốn hạn chế quyền truy cập vào các bảng để chỉ các thủ tục được lưu trữ, nhưng tôi cần phải tìm một cách để làm việc xung quanh các thủ tục được lưu trữ sử dụng "Execute sp_Executesq" l. Cảm ơn bạn.
Bạn có thể nhận avdice serverfault tốt hơn. Lời khuyên của tôi - Nói chuyện với dba và giải thích tình hình. Làm việc với họ để có quyền truy cập. –