SQL Server, xóa tất cả quyền truy cập của người dùng vào một đối tượng bảng


7

Là một công việc dọn dẹp, tôi đang cố gắng loại bỏ quyền truy cập của tất cả người dùng (bao gồm cả người dùng không công khai) vào một đối tượng bảng duy nhất (ngoài các siêu nhân) và sau đó sẽ cấp quyền truy cập mới. Có cách nào đơn giản để loại bỏ quyền truy cập vào bảng mà không cần sử dụng con trỏ với bảng hệ thống không?


bạn có muốn thu hồi một quyền của người dùng đối với tất cả các bảng hoặc tất cả các quyền của người dùng đối với một bảng không?

1
sử dụng lệnh thu hồi thông thường với tùy chọn công khai, điều này sẽ thu hồi quyền truy cập vào bảng cho tất cả người dùng công cộng.

@Brian Không phải tất cả người dùng đều ở trong vai trò chung. Xin lỗi sẽ chỉnh sửa câu hỏi.

Câu trả lời:


3

Mã này sẽ hoạt động dưới đây:

declare 
    @user_name sysname,
    @deny_cmd nvarchar(500)

declare UserCursor cursor for
select name
from sys.database_principals
where type in ('U', 'S')
and name not in ('dbo', 'information_schema', 'sys')

open UserCursor

fetch next from UserCursor
into @user_name

while @@fetch_status = 0
begin
    set @deny_cmd = 
        'deny select, insert, update, delete on object::UberSecureTable
        to ' + @user_name

    exec (@deny_cmd)

    fetch next from UserCursor
    into @user_name
end

close UserCursor
deallocate UserCursor

Hãy cho tôi biết nếu đó là những gì bạn đang tìm kiếm. Thay đổi UberSecureTable thành tên bảng thực tế của bạn.


Cảm ơn @Shark. Điều này hoạt động và thực hiện công việc, nhưng tôi đang tìm kiếm xem liệu có lệnh quản trị viên có thể tránh sử dụng con trỏ không. Tương tự như vậy, người ta có thể xóa các hàng, nhưng cũng có lệnh cắt ngắn. Tôi vẫn bình chọn câu trả lời của bạn mặc dù.
NaN
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.