Tôi muốn thiết lập người dùng "đọc" trên phiên bản SQL Server 2012 của mình. Tôi muốn cho phép anh ta thực hiện bất kỳ thủ tục được lưu trữ, hoặc hàm hoặc câu lệnh SQL trực tiếp nào, lấy dữ liệu từ tất cả các bảng và dạng xem, nhưng không cập nhật hoặc chèn (tức là đọc bất cứ thứ gì và không viết gì).
Tôi có thể thiết lập điều này mà không cung cấp quyền cụ thể cho từng chức năng hoặc thủ tục được lưu trữ theo tên, mà chỉ cấp cho anh ta quyền thực thi trên bất kỳ chức năng hoặc thủ tục được lưu trữ nào, chỉ mất quyền sửa đổi bảng?
Thay vào đó, mọi thứ sẽ thay đổi nếu tôi chạy SQL Server 2008 chứ?
Làm rõ và bổ sung:
- Nếu một thủ tục được lưu trữ thay đổi dữ liệu, người dùng sẽ nhận được thông báo lỗi (từ chối sửa đổi hoặc từ chối truy cập hoàn toàn vào thủ tục được lưu trữ).
- Nếu một giải pháp tiềm năng liên quan đến việc từ chối quyền, tôi có thể không cấp một số quyền nhất định thay vì từ chối không?
- Từ chối có thể được áp dụng trên tất cả các bảng, dạng xem, v.v. (hiện tại và trong tương lai) trong cơ sở dữ liệu trong một tuyên bố không?
GRANT
để cấp quyền, DENY
từ chối quyền và REVOKE
xóa một GRANT
hoặc DENY
. Nếu không có GRANT
hoặc DENY
người dùng có thể kế thừa quyền, hãy nói từ việc truy cập vào một thủ tục được lưu trữ.
DENY DELETE, INSERT, UPDATE
trên cơ sở dữ liệu hoặc lược đồ tôi tin rằng nó sẽ chỉ ảnh hưởng đến các bảng và dạng xem.