Đăng bài này như một câu trả lời chỉ vì nó quá dài cho một bình luận, và bởi vì nó sẽ có liên quan đến những người dùng khác khá sớm.
SQL Server 2014 bổ sung một số quyền cấp độ máy chủ mới sẽ hỗ trợ chính xác loại kịch bản này - chúng được thiết kế để kiểm toán, nhưng loại yêu cầu này dường như cũng phù hợp với dự luật đó. Bạn chỉ có thể thêm hai quyền sau vào đăng nhập cấp máy chủ:
CONNECT ANY DATABASE
SELECT ALL USER SECURABLES
Cái trước, giống như âm thanh, cho phép đăng nhập kết nối với bất kỳ cơ sở dữ liệu nào. Điều tuyệt vời ở đây là nó sẽ cho phép điều này ngay cả đối với các cơ sở dữ liệu được tạo trong tương lai (miễn là bạn không đặt từ chối rõ ràng, đó là cách bạn có thể bảo vệ cơ sở dữ liệu người dùng khỏi các thông tin đăng nhập có quyền này). Sau đó cho phép đăng nhập để thực hiện thao tác đọc trên bất kỳ cơ sở dữ liệu họ có quyền truy cập vào - để họ có thể SELECT
từ các bảng, quan điểm, UDFs vv nhưng họ sẽ không thể thực hiện bất kỳ UPDATE
hoạt động (tôi đã không kiểm tra nếu phép này hiểu khi một thủ tục lưu trữ thực hiện DML). Các kết hợp này hoạt động rất tốt nếu bạn muốn cung cấp quyền truy cập đọc mở rộng đăng nhập cho toàn bộ máy chủ hoặc để chi tiết hơn, bạn có thể cấp các CONNECT
đặc quyền truyền thống cho các cơ sở dữ liệu nhất định và SELECT ALL USER SECURABLES
quyền sẽchỉ có chức năng cho những cơ sở dữ liệu mà đăng nhập có quyền truy cập rõ ràng.
Những thay đổi bảo mật năm 2014 được ghi lại ở đây - tốt, một phần; họ quên mất quyền cấp cơ sở dữ liệu ALTER ANY DATABASE EVENT SESSION
- mặc dù điều đó không liên quan ở đây.