Удалить роль в базе данных SQL Server?
-
19-09-2019 - |
Вопрос
Я пытаюсь удалить одну из ролей в моей базе данных SQL Server.Я удалил всех участников из роли, и когда я попытался удалить роль, я получил это сообщение об ошибке:
Msg 15138, Level 16, State 1, Line 13
The database principal owns a schema in the database, and cannot be dropped.
Кто-нибудь знает почему?Я проверил принадлежащую схему, и у нее был только контрольный знак в ее собственном имени.
Решение
Вы не можете удалить участника базы данных, которому принадлежит схема.Вы должны передать право собственности на схему какому-либо другому участнику базы данных или удалить схему, прежде чем сможете удалить участника базы данных.
Другие советы
Ошибка 15138 связана с тем, что пользователь, которого вы пытаетесь удалить, владеет схемой.
Если вы выполните приведенный ниже запрос, вы получите схему, принадлежащую пользователю.
USE DatabaseName;
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('UserName');
Допустим, он возвращает схему 'db_denydatareader'.Затем вы можете назначить эту схему пользователю dbo по умолчанию, используя приведенный ниже запрос.
ALTER AUTHORIZATION ON SCHEMA::db_denydatareader TO dbo;