Không thể cấp, từ chối hoặc thu hồi quyền đối với sa, dbo, chủ sở hữu thực thể, information_schema, sys hoặc chính bạn


8

Tôi gặp phải lỗi sau:

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

khi tôi đang thử những lệnh này

USE ASPState
GO

GRANT EXECUTE ON CreateTempTables TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON DeleteExpiredSessions TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetMajorVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetHashCode TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetAppID TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertUninitializedItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempReleaseStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempRemoveStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempResetTimeout TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLongNullShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShortNullLong TO [R2Server\AAOUser]
GO

Vậy, làm thế nào để tôi biết loại quyền nào mà tài khoản của tôi R2Server\AAOUsercó cho cơ sở dữ liệu ASPState? và các cách để khắc phục lỗi (để tôi có thể cấp các quyền này cho tài khoản của mình) là gì?


Là người dùng của bạn sysadmin trên máy chủ? Hoặc chủ sở hữu db trên db đó?
Mary

Thật ra không có. (tài khoản người dùng của tôi không phải là một sysadmincũng không db owner.)
Jack

Tôi nghĩ rằng tôi phát hiện ra rằng tôi là người db ownersử dụng Microsoft SQL Server Management Studio. Vì vậy, tôi có thể kết luận rằng tôi không cần phải cấp cho mình bất kỳ sự cho phép nào vì tôi là chủ sở hữu của ASPStatecơ sở dữ liệu. đúng?
Jack

Bạn đúng. Nếu bạn là chủ sở hữu db, bạn không cần bất kỳ quyền cơ sở dữ liệu nào khác.
Mary

@ Cảm ơn Marian, có lẽ bạn muốn đặt câu trả lời của mình và bao gồm các lệnh sẽ được nhập vào sqlcmd để người ta biết anh ta có quyền gì trên cơ sở dữ liệu.
Jack

Câu trả lời:


7

Theo nhận xét, nếu bạn đã là chủ sở hữu db của cơ sở dữ liệu đó, thì bạn không cần phải cấp bất kỳ quyền nào cho db.

Bây giờ, để tìm ra những quyền cụ thể mà bạn có, bạn có thể sử dụng các truy vấn sau:

  • tìm quyền trên db cụ thể:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • tìm quyền trên tất cả các máy chủ:

    SELECT * FROM fn_my_permissions(NULL, 'SERVER');
    GO

Xem một số thông tin khác tại đây: Tìm hiểu Đăng nhập Máy chủ SQL và Vai trò Máy chủ được liên kết , trên diễn đàn MSDN.


1
Đối với những người không biết nhiều về SQL, bạn phải thay thế AdventureWorks2008R2bằng tên cơ sở dữ liệu của riêng bạn. Phần fn_my_permissionsnày là giống nhau cho tất cả các cơ sở dữ liệu.
SaiyanGirl
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.