Làm thế nào để GRANT cho phép thực hiện thủ tục được lưu trữ?


7

Tôi có một nhóm AD được thiết lập dưới dạng Đăng nhập SQL được xác thực của Windows trên Máy chủ SQL của tôi. Trên DatabaseAđó có db_datareaderpublicvai trò. Vì vậy, người dùng của nhóm AD này chỉ có quyền truy cập đọc vào các thực thể trong cơ sở dữ liệu.

Bên trong DatabaseAtôi có một quy trình được lưu trữ dbo.Proc1mà tôi đã cấp executephép cho cùng một nhóm AD.

Khi người dùng của nhóm AD đó kết nối với máy chủ này, họ sẽ không nhìn thấy thực thể dbo.Proc1.

Có bất kỳ sự cho phép nào khác mà tôi cần cung cấp cho Đăng nhập SQL xác thực (nhóm AD) mà tôi đang thiếu không?

Tôi thấy, nếu tôi nhìn vào các thuộc tính của DatabaseA, rằng có một sự executecho phép ở cấp độ đó chưa được cấp.

(Lưu ý: Tôi chỉ muốn người dùng của nhóm AD này có khả năng thực thi dbo.Proc1. Tôi không muốn họ có thể làm bất cứ điều gì không được coi là loại hành động "chỉ đọc".)


1
"Họ không nhìn thấy thực thể dbo.Proc1" Điều đó không xảy ra trừ khi bạn từ chối rõ ràng XEM XÁC ĐỊNH. Mặt khác, XEM ĐỊNH NGH DEA được cấp tự động khi bạn cấp bất kỳ quyền nào khác cho một đối tượng.
David Browne - Microsoft

Họ có thể thực hiện thủ tục hay họ không thể thấy nó trong SSMS hoặc một số GUI cơ sở dữ liệu khác? Có phải là một nhóm AD mới? Người dùng đã đăng xuất và bật hoặc khởi động lại kể từ khi được thêm vào?
Alen

1
Đó không phải là một nhóm AD mới, họ chắc chắn đã đăng xuất và quay lại kể từ khi họ được thêm vào. Họ không thấy thủ tục. Tôi đã cố tình bỏ qua thực tế là họ đang cố gắng kéo nó vào Excel (họ không sử dụng SSMS nhưng tôi đang yêu cầu họ cài đặt nó ngay bây giờ để xem xác minh xem đó có phải là sự cố Excel không). Vì vậy, trong Excel khi họ truy cập Dữ liệu -> Nhận Dữ liệu -> Từ Cơ sở dữ liệu -> Từ Cơ sở dữ liệu Máy chủ SQL, họ sẽ hỏi họ tên máy chủ nhưng không yêu cầu thông tin xác thực (giả sử nó xác thực qua tài khoản miền của anh ta) và sau đó trong danh sách của cơ sở dữ liệu, thực thể dbo.Proc1 không hiển thị trong Cơ sở dữ liệu.
JD

@ DavidBrowne-Microsoft Nếu điều đó là đúng, tôi có nên xem quyền "Xem định nghĩa" khi GRANT được kiểm tra trong Thuộc tính cấp phép của thực thể dbo.Proc1 không? Hiện tại khi tôi quay lại để kiểm tra Quyền của dbo.Proc1, chỉ có quyền Thực thi mới được cấp cho tài khoản AD này.
JD

Câu trả lời:


8

trong Excel khi họ truy cập Dữ liệu -> Nhận Dữ liệu -> Từ Cơ sở dữ liệu -> Từ Cơ sở dữ liệu Máy chủ SQL

Đó là PowerQuery. Chỉ cần chạy trên Excel và các thủ tục được lưu trữ sẽ không xuất hiện, nhưng Hàm có giá trị bảng thì có. Và bạn có thể gọi một thủ tục được lưu trữ, nhưng nó sẽ không hiển thị trong trình thiết kế truy vấn. Bạn chỉ cần nhập 'exec dbo.Proc1' trong hộp thoại SQL Statement:

nhập mô tả hình ảnh ở đây


Bạn nói đúng, đây là vấn đề! Hôm nay tôi học cách luôn luôn bao gồm tất cả các chi tiết trong câu hỏi ban đầu của tôi :). Cảm ơn bạn đã giúp đỡ! Ps Nếu bạn nói chuyện với bất kỳ nhà phát triển nào trong nhóm PowerQuery, có thể đáng nói đến việc bao gồm các quy trình trong danh sách thực thể UI sẽ hữu ích cho người dùng;). Có thể sử dụng PowerShell như SSMS sử dụng để có được tất cả các thực thể.
JD
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.