Невозможно предоставить, отклонить или отозвать разрешения для sa, dbo, владельца сущности, information_schema, sys или вас самих.


8

Я сталкиваюсь со следующей ошибкой:

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

когда я пытался эти команды

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

Итак, как мне узнать, какие разрешения у моей учетной записи R2Server\AAOUserдля базы данных ASPState? и как можно устранить ошибку (чтобы я мог предоставить эти разрешения моей учетной записи)?


Ваш пользователь sysadmin на сервере? Или владелец БД на этом БД?
— Мариан

На самом деле нет. (моя учетная запись не является sysadminни db owner.)
— Джек,

Я думаю, что узнаю, что db ownerиспользую Microsoft SQL Server Management Studio. Таким образом, я могу сделать вывод, что мне не нужно давать никаких разрешений, поскольку я являюсь владельцем ASPStateбазы данных. правильно?
— Джек,

Вы правы. Если вы владелец БД, вам не нужны никакие другие разрешения для базы данных.
— Мариан

@ Спасибо Мариан, возможно, вы хотели бы добавить свой ответ и включить какие команды для ввода в sqlcmd, чтобы знать, какие разрешения он имеет для базы данных.
— Джек,

Ответы:


7

Что касается комментариев, если вы уже являетесь владельцем базы данных этой базы данных, вам не нужно предоставлять никаких разрешений для базы данных.

Теперь, чтобы выяснить, какие конкретно у вас есть разрешения, вы можете использовать следующие запросы:

  • найти разрешения на конкретную базу данных:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • найти разрешения на всем сервере:

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

Другие сведения см. Здесь: Узнайте имена входа SQL Server и соответствующие роли сервера на форуме MSDN.


1
Для тех, кто мало знает о SQL, вы должны заменить AdventureWorks2008R2свое имя базы данных. fn_my_permissionsЧасть одинакова для всех баз данных.
— SaiyanGirl
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.