Tôi là một lập trình viên, không phải là một dba ... Tôi biết chỉ đủ nguy hiểm.
Tôi đã kế thừa cơ sở dữ liệu với người dùng cũ là db_owner cho cơ sở dữ liệu. Chúng tôi không thể điều chỉnh sự cho phép của người dùng này đối với các bảng, lược đồ hiện có, v.v., vì lý do kinh doanh, nhưng một số bảng mới đang được tạo và tôi chỉ muốn người dùng này có quyền truy cập CHỌN trên chúng.
Quyền đã được đặt cho người dùng này đối với các bảng này để mọi thứ đều bị TỪ CHỐI, ngoại trừ CHỌN, được đặt thành GRANT.
Tuy nhiên, khi người dùng này (dbadmin) cố gắng thực hiện CHỌN trên một trong các bảng này (AccountingAudit), lỗi này xảy ra:
The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'.
Tôi đã chạy SQL này để thử và xem những quyền nào được đặt cho bảng / người dùng này:
select object_name(major_id) as object,
user_name(grantee_principal_id) as grantee,
user_name(grantor_principal_id) as grantor,
permission_name,
state_desc
from sys.database_permissions
Và đây là những gì tôi nhận lại:
AccountingAudit dbadmin dbo ALTER DENY
AccountingAudit dbadmin dbo CONTROL DENY
AccountingAudit dbadmin dbo DELETE DENY
AccountingAudit dbadmin dbo INSERT DENY
AccountingAudit dbadmin dbo REFERENCES DENY
AccountingAudit dbadmin dbo SELECT GRANT
AccountingAudit dbadmin dbo TAKE OWNERSHIP DENY
AccountingAudit dbadmin dbo UPDATE DENY
AccountingAudit dbadmin dbo VIEW DEFINITION DENY
AccountingAudit dbadmin dbo VIEW CHANGE TRACKING DENY
Có vẻ như nó nên được làm việc phải không?
Cuộc gọi CHỌN tôi đang thực hiện là một CHỌN rất cơ bản * TỪ AccountingAudit, từ bên trong SSMS. Tôi không làm bất kỳ sp_executesql đặc biệt hoặc bất cứ điều gì tương tự.
Tôi đã cố gắng cấp phép rõ ràng:
GRANT SELECT ON [dbo].AccountingAudit TO dbadmin
Điều này không có tác dụng (tại sao nó, truy vấn ở trên đã cho thấy nó được cấp! ;-)
Tôi đã tìm kiếm thông qua stackoverflow.com và các nơi khác, và không thể tìm thấy bất cứ điều gì tôi chưa thử. Tôi tự hỏi nếu nó có một cái gì đó để làm với cách các lược đồ được thiết lập. (Tại thời điểm này tôi biết rất ít về lược đồ.)
Có ý kiến gì không? Cảm ơn!