2016-09-19 12 views
7

Cách kiểm tra xem đăng nhập có quyền đối với một bảng cụ thể không?Kiểm tra quyền cắt xén/thay thế cho thông tin đăng nhập

Chúng tôi có thông tin đăng nhập được gọi là Test mà chúng tôi đã cho phép các quyền riêng biệt đối với các bảng cụ thể chỉ cho phép ALTER. Bây giờ tôi muốn có danh sách các bảng có đăng nhập Test có quyền Alter.

Đã đăng ký google và diễn đàn không thể tìm thấy câu trả lời nào.

+3

Hãy thử điều này: http://stackoverflow.com/questions/7048839/sql-server-query-to-find-all-permissions-access-cho-tất cả-người dùng-trong-một-cơ sở dữ liệu – sagi

+0

@sagi - Cảm ơn, liên kết đã giúp tôi tìm câu trả lời nhưng không chính xác những gì tôi đang được tìm kiếm. Sẽ đăng trả lời sớm –

Trả lời

2

Giả sử rằng bạn có khả năng để mạo danh người dùng, bạn có thể làm như sau:

execute as user = 'Test'; 

select p.* 
from sys.tables as t 
cross apply sys.fn_my_permissions(t.name, 'OBJECT') as p 
    where permission_name = 'ALTER'; 

revert; 
+0

Không thể tìm thấy chi tiết đăng nhập trong truy vấn trên –

+0

Bạn đã đọc/hiểu mã chưa? Hay bạn chỉ cần sao chép và dán nó vào cửa sổ Management Studio của bạn và chạy nó? Nếu sau này mà không có cựu, đó là một thói quen thực sự nguy hiểm. Bạn phải thay đổi tên của người dùng mà bạn đang mạo danh để nhận các quyền cho người dùng đó. Tôi đã cập nhật mã cho phù hợp –

+0

Vô cùng xin lỗi đã không đọc câu trả lời của bạn đúng .. Một trong những ngày tồi tệ nhất của tôi tại văn phòng .. Thực hiện với người dùng thích hợp và nó cho thấy chính xác những gì tôi đang tìm kiếm –

2

Nếu bạn muốn liệt kê các quyền đối với một người dùng cụ thể, Hãy thử với truy vấn bên dưới.

SELECT OBJECT_NAME(major_id) TableName,PERMISSION_NAME, STATE_DESC, U.name UserName 
FROM sys.database_permissions P 
    JOIN sys.tables T ON P.major_id = T.object_id 
    JOIN sysusers U ON U.uid = P.grantee_principal_id 
WHERE U.name='Test' 

enter image description here

+0

Nó không trả lại bất kỳ kết quả nào –

+0

@prdp: tôi đã thử, hoạt động của nó..vui lòng xem ảnh chụp màn hình. –

1

Bạn có thể sử dụng chức năng sau cũng như để nhanh chóng kiểm tra các điều khoản mà có sẵn cho một người dùng cụ thể.

MS SQL Documentation sẽ cung cấp cho bạn một số thông tin hữu ích về cách sử dụng được cung cấp trong liên kết.

Cú pháp:

SELECT * FROM sys.fn_my_permissions('TEST', 'USER'); 
+0

Điều này sẽ không cung cấp thông tin cấp 'Object' –

Các vấn đề liên quan