Невозможно предоставить, отклонить или отозвать разрешения для 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.